{"id":4518,"date":"2026-05-28T06:05:11","date_gmt":"2026-05-28T05:05:11","guid":{"rendered":"https:\/\/www.onlinelearningsystem.net\/xyz\/revision-notes\/a-level-chemistry\/edexcel\/topic-1-atomic-structure-and-the-periodic-table\/mass-spectrometry\/the-mass-spectrometer\/"},"modified":"2026-05-29T05:34:57","modified_gmt":"2026-05-29T04:34:57","slug":"the-mass-spectrometer","status":"publish","type":"page","link":"https:\/\/www.onlinelearningsystem.net\/xyz\/revision-notes\/a-level-chemistry\/edexcel\/topic-1-atomic-structure-and-the-periodic-table\/mass-spectrometry\/the-mass-spectrometer\/","title":{"rendered":"The Mass Spectrometer"},"content":{"rendered":"\n<section class=\"ols-revision-page ols-mass-spectrometer-9ch0-page\">\n  <style>\n    .ols-revision-page {\n      --navy: #1C244B;\n      --blue: #2563eb;\n      --soft-blue: #eef4ff;\n      --soft-red: #fff7f7;\n      --soft-purple: #f7f0ff;\n      --soft-green: #f0f7f1;\n      --soft-orange: #fff7ed;\n      --gold: #c9973a;\n      --grey-text: #667085;\n      --body-text: #1f2937;\n      --border: rgba(28, 36, 75, 0.14);\n      --shadow: 0 18px 45px rgba(28, 36, 75, 0.10);\n      --inner-shadow: 0 10px 26px rgba(28, 36, 75, 0.08);\n      font-family: Poppins, Arial, sans-serif;\n      color: var(--navy);\n      background: #ffffff;\n    }\n    .ols-revision-page * { box-sizing: border-box; }\n    .ols-main { min-width: 0; max-width: 970px; }\n    .ols-breadcrumbs { display: flex; flex-wrap: wrap; gap: 8px; margin: 10px 0 22px; font-size: 15px; color: var(--grey-text); }\n    .ols-breadcrumbs a, .ols-breadcrumbs span { color: var(--grey-text); text-decoration: none; font-weight: 600; }\n    .ols-breadcrumbs a:hover { color: var(--blue); text-decoration: underline; text-underline-offset: 3px; }\n    .ols-title-card, .ols-note-card, .ols-h5p-card, .ols-related-card, .ols-faq-card { background: #ffffff; border: 1px solid var(--border); border-radius: 28px; box-shadow: var(--shadow); padding: 34px; margin-bottom: 24px; overflow: hidden; }\n    .ols-title-card { background: linear-gradient(135deg, #ffffff 0%, #f8fbff 100%); }\n    .ols-title-card h1 { margin: 0 0 18px; font-size: clamp(36px, 5vw, 58px); line-height: 1.08; font-weight: 800; letter-spacing: -0.04em; color: #111827; }\n    .ols-page-intro { font-size: 19px; line-height: 1.7; font-weight: 300; color: var(--body-text); margin: 0 0 22px; }\n    .ols-badges { display: flex; flex-direction: column; align-items: flex-start; gap: 12px; margin-bottom: 22px; }\n    .ols-badge { display: inline-flex; align-items: center; padding: 9px 14px; border-radius: 999px; background: #ffffff; border: 1px solid var(--border); font-size: 15px; font-weight: 600; color: var(--navy); }\n    .ols-author { display: flex; align-items: center; gap: 20px; padding: 28px; border-radius: 28px; background: linear-gradient(135deg, #ffffff 0%, #f8fbff 100%); border: 1px solid rgba(28,36,75,0.12); box-shadow: 0 18px 45px rgba(28,36,75,0.10); margin-top: 22px; }\n    .ols-author-avatar-img { width: 92px; height: 92px; border-radius: 50%; object-fit: cover; object-position: center; flex-shrink: 0; border: 4px solid #ffffff; box-shadow: 0 14px 32px rgba(28,36,75,0.18), 0 0 0 1px rgba(28,36,75,0.10); transition: transform 0.25s ease, box-shadow 0.25s ease; }\n    .ols-author:hover .ols-author-avatar-img { transform: scale(1.04); box-shadow: 0 20px 42px rgba(28,36,75,0.22), 0 0 0 1px rgba(28,36,75,0.10); }\n    .ols-author-content { min-width: 0; }\n    .ols-author-title { margin: 0 0 4px; font-size: clamp(24px,3vw,34px); line-height: 1.15; font-weight: 700; color: var(--navy); letter-spacing: -0.03em; }\n    .ols-author-description { margin: 0; font-size: 17px; line-height: 1.7; font-weight: 300; color: var(--grey-text); }\n    .ols-linkedin-pill { display: inline-flex; align-items: center; justify-content: center; gap: 10px; margin-top: 16px; padding: 11px 18px; border-radius: 999px; background: linear-gradient(135deg,#0A66C2,#004182); color: #ffffff; text-decoration: none; font-size: 14px; line-height: 1; font-weight: 700; letter-spacing: 0.01em; box-shadow: 0 10px 22px rgba(10,102,194,0.24); position: relative; overflow: hidden; transition: transform 0.22s ease, box-shadow 0.22s ease; }\n    .ols-linkedin-pill::before { content: \"\"; position: absolute; top: 0; left: -120%; width: 100%; height: 100%; background: linear-gradient(120deg, rgba(255,255,255,0) 0%, rgba(255,255,255,0.28) 50%, rgba(255,255,255,0) 100%); transition: left 0.7s ease; }\n    .ols-linkedin-pill:hover { transform: translateY(-3px) scale(1.03); box-shadow: 0 16px 34px rgba(10,102,194,0.34), 0 0 0 6px rgba(10,102,194,0.10); color: #ffffff; }\n    .ols-linkedin-pill:hover::before { left: 120%; }\n    .ols-linkedin-icon { width: 18px; height: 18px; display: block; flex-shrink: 0; }\n    .ols-note-card.soft { background: linear-gradient(135deg, #ffffff 0%, var(--soft-red) 100%); }\n    .ols-note-card.purple { background: linear-gradient(135deg, #ffffff 0%, var(--soft-purple) 100%); }\n    .ols-note-card.orange { background: linear-gradient(135deg, #ffffff 0%, var(--soft-orange) 100%); }\n    .ols-note-title { display: flex; align-items: center; gap: 14px; margin-bottom: 20px; }\n    .ols-note-icon { width: 52px; height: 52px; border-radius: 16px; background: var(--navy); color: #ffffff; display: grid; place-items: center; font-size: 24px; font-weight: 800; flex-shrink: 0; }\n    .ols-note-title h2, .ols-h5p-card h2, .ols-related-card h2, .ols-faq-card h2 { margin: 0; font-size: clamp(28px, 3.5vw, 42px); line-height: 1.15; font-weight: 800; color: #111827; letter-spacing: -0.03em; }\n    .ols-h5p-card h2, .ols-related-card h2, .ols-faq-card h2 { margin-bottom: 14px; }\n    .ols-note-card p, .ols-note-card li { font-size: clamp(15px, 1.25vw, 17px); line-height: 1.65; font-weight: 300; color: var(--body-text); }\n    .ols-h5p-card p, .ols-related-card p, .ols-faq-card p { font-size: clamp(15px, 1.3vw, 18px); line-height: 1.65; font-weight: 300; color: var(--body-text); }\n    .ols-note-card strong, .ols-h5p-card strong, .ols-related-card strong, .ols-faq-card strong { font-weight: 700; color: var(--navy); }\n    .ols-note-card ul, .ols-note-card ol { margin: 0; padding-left: 22px; }\n    .ols-key-box { margin-top: 20px; background: var(--soft-green); border: 1px solid rgba(63, 143, 70, 0.25); border-radius: 20px; padding: 18px 20px; }\n    .ols-key-box p { margin: 0; font-weight: 400; color: var(--navy); }\n    .ols-rule-list { display: grid; gap: 14px; margin-top: 18px; }\n    .ols-rule-item { background: #ffffff; border: 1px solid var(--border); border-left: 5px solid var(--blue); border-radius: 18px; padding: 18px; box-shadow: var(--inner-shadow); }\n    .ols-rule-item h3 { margin: 0 0 8px; font-size: 20px; line-height: 1.25; color: var(--navy); }\n    .ols-rule-item p { margin: 0; font-size: 15px; line-height: 1.6; }\n    .ols-figure-card { margin: 26px 0 4px; border: 1px solid var(--border); border-radius: 26px; overflow: hidden; background: #ffffff; box-shadow: var(--inner-shadow); }\n    .ols-figure-image { width: 100%; min-height: 330px; display: flex; align-items: center; justify-content: center; background: #ffffff; padding: 20px; }\n    .ols-figure-image img { max-width: 100%; height: auto; display: block; }\n    .ols-figure-caption { padding: 22px 26px 24px; background: linear-gradient(135deg, #ffffff, #f8fbff); border-top: 1px solid var(--border); }\n    .ols-figure-caption p { margin: 0; color: #5f6b85; font-size: clamp(15px, 1.3vw, 17px); line-height: 1.6; font-weight: 300; font-style: italic; }\n    .ols-table-wrap { overflow: hidden; border-radius: 22px; border: 1px solid var(--border); background: #ffffff; margin-top: 18px; }\n    .ols-table { width: 100%; border-collapse: collapse; table-layout: fixed; }\n    .ols-table th { background: var(--navy); color: #ffffff; padding: 16px; text-align: left; font-size: clamp(14px, 1.2vw, 17px); font-weight: 600; overflow-wrap: anywhere; }\n    .ols-table td { padding: 16px; border-bottom: 1px solid var(--border); font-size: clamp(14px, 1.15vw, 16px); line-height: 1.45; color: var(--body-text); vertical-align: top; overflow-wrap: anywhere; }\n    .ols-table tr:last-child td { border-bottom: none; }\n    .ols-h5p-card { background: linear-gradient(135deg, #ffffff 0%, #f7f0ff 100%); }\n    .ols-h5p-frame { margin-top: 22px; padding: 18px; border-radius: 24px; background: #ffffff; border: 1px solid var(--border); box-shadow: inset 0 0 0 1px rgba(28, 36, 75, 0.03); }\n    .ols-faq-list { display: grid; gap: 14px; margin-top: 18px; }\n    .ols-faq-item { background: #ffffff; border: 1px solid var(--border); border-radius: 18px; padding: 18px 20px; box-shadow: var(--inner-shadow); }\n    .ols-faq-item h3 { margin: 0 0 8px; font-size: 20px; line-height: 1.3; color: var(--navy); }\n    .ols-faq-item p { margin: 0; font-size: 16px; line-height: 1.65; color: var(--body-text); }\n    .ols-related-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; margin-top: 18px; }\n    .ols-related-item { border: 1px solid var(--border); border-radius: 18px; padding: 18px; background: #ffffff; color: var(--navy); text-decoration: none; font-weight: 600; line-height: 1.5; transition: transform 0.2s ease, box-shadow 0.2s ease; }\n    .ols-related-item:hover { transform: translateY(-2px); box-shadow: 0 10px 22px rgba(28, 36, 75, 0.08); color: var(--blue); }\n    @media (max-width: 1050px) {\n      .ols-main { max-width: none; }\n      .ols-related-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }\n    }\n    @media (max-width: 760px) {\n      .ols-title-card, .ols-note-card, .ols-h5p-card, .ols-related-card, .ols-faq-card { padding: 24px 18px; border-radius: 22px; }\n      .ols-note-title { align-items: flex-start; }\n      .ols-figure-card { border-radius: 22px; }\n      .ols-figure-image { min-height: 230px; padding: 14px; }\n      .ols-figure-caption { padding: 18px; }\n      .ols-table-wrap { border: none; background: transparent; }\n      .ols-table, .ols-table thead, .ols-table tbody, .ols-table th, .ols-table td, .ols-table tr { display: block; width: 100%; }\n      .ols-table { border-collapse: separate; border-spacing: 0; }\n      .ols-table thead { display: none; }\n      .ols-table tr { margin-bottom: 14px; border: 1px solid var(--border); border-radius: 18px; overflow: hidden; background: #ffffff; box-shadow: var(--inner-shadow); }\n      .ols-table td { border-bottom: 1px solid var(--border); padding: 14px 16px; overflow-wrap: anywhere; }\n      .ols-table td:last-child { border-bottom: none; }\n      .ols-table td::before { content: attr(data-label); display: block; margin-bottom: 6px; font-size: 13px; font-weight: 700; color: var(--blue); }\n      .ols-author { align-items: flex-start; padding: 22px 18px; border-radius: 22px; }\n      .ols-author-avatar-img { width: 72px; height: 72px; }\n      .ols-author-title { font-size: 24px; }\n      .ols-author-description { font-size: 15px; }\n    }\n  <\/style>\n\n  <aside class=\"ols-sidebar\">\r\n  <div class=\"ols-sidebar-header\">\r\n    <h3>Revision Notes<\/h3>\r\n    <p>A Level Chemistry<\/p>\r\n  <\/div>\r\n\r\n  <div class=\"ols-topic-group\">\r\n    <h4>Topic 1 Atomic Structure and The Periodic Table<\/h4>\r\n\r\n    <ul class=\"ols-topic-list\">\r\n      <li>\r\n        <a href=\"https:\/\/www.onlinelearningsystem.net\/xyz\/revision-notes\/a-level-chemistry\/edexcel\/topic-1-atomic-structure-and-the-periodic-table\/atomic-structure\/\">Atomic Structure<\/a>\r\n      <\/li>\r\n\r\n      <li>\r\n        <a href=\"https:\/\/www.onlinelearningsystem.net\/xyz\/revision-notes\/a-level-chemistry\/edexcel\/topic-1-atomic-structure-and-the-periodic-table\/mass-spectrometry\/\">Mass Spectrometry<\/a>\r\n\r\n        <ul class=\"ols-subtopic-list\">\r\n          <li>\r\n            <a href=\"https:\/\/www.onlinelearningsystem.net\/xyz\/revision-notes\/a-level-chemistry\/edexcel\/topic-1-atomic-structure-and-the-periodic-table\/mass-spectrometry\/the-mass-spectrometer\/\">The Mass Spectrometer<\/a>\r\n          <\/li>\r\n          <li>\r\n            <a href=\"https:\/\/www.onlinelearningsystem.net\/xyz\/revision-notes\/a-level-chemistry\/edexcel\/topic-1-atomic-structure-and-the-periodic-table\/mass-spectrometry\/ram-calculations\/\">RAM Calculations<\/a>\r\n          <\/li>\r\n          <li>\r\n            <a href=\"https:\/\/www.onlinelearningsystem.net\/xyz\/revision-notes\/a-level-chemistry\/edexcel\/topic-1-atomic-structure-and-the-periodic-table\/mass-spectrometry\/predicting-diatomic-mass-spectra\/\">Predicting Diatomic Mass Spectra<\/a>\r\n          <\/li>\r\n          <li>\r\n            <a href=\"https:\/\/www.onlinelearningsystem.net\/xyz\/revision-notes\/a-level-chemistry\/edexcel\/topic-1-atomic-structure-and-the-periodic-table\/mass-spectrometry\/identifying-compounds-from-mass-spectra\/\">Identifying Compounds from Mass Spectra<\/a>\r\n          <\/li>\r\n        <\/ul>\r\n      <\/li>\r\n\r\n      <li>\r\n        <a href=\"https:\/\/www.onlinelearningsystem.net\/xyz\/revision-notes\/a-level-chemistry\/edexcel\/topic-1-atomic-structure-and-the-periodic-table\/electron-configuration\/\">Electron Configuration<\/a>\r\n      <\/li>\r\n\r\n      <li>\r\n        <a href=\"https:\/\/www.onlinelearningsystem.net\/xyz\/revision-notes\/a-level-chemistry\/edexcel\/topic-1-atomic-structure-and-the-periodic-table\/ionisation-energy\/\">Ionisation Energy<\/a>\r\n\r\n        <ul class=\"ols-subtopic-list\">\r\n          <li>\r\n            <a href=\"https:\/\/www.onlinelearningsystem.net\/xyz\/revision-notes\/a-level-chemistry\/edexcel\/topic-1-atomic-structure-and-the-periodic-table\/ionisation-energy\/introduction-to-ionisation-energy\/\">Introduction to Ionisation Energy<\/a>\r\n          <\/li>\r\n          <li>\r\n            <a href=\"https:\/\/www.onlinelearningsystem.net\/xyz\/revision-notes\/a-level-chemistry\/edexcel\/topic-1-atomic-structure-and-the-periodic-table\/ionisation-energy\/successive-ionisation-energies\/\">Successive Ionisation Energies<\/a>\r\n          <\/li>\r\n          <li>\r\n            <a href=\"https:\/\/www.onlinelearningsystem.net\/xyz\/revision-notes\/a-level-chemistry\/edexcel\/topic-1-atomic-structure-and-the-periodic-table\/ionisation-energy\/trends-in-a-period\/\">Trends in a Period<\/a>\r\n          <\/li>\r\n          <li>\r\n            <a href=\"https:\/\/www.onlinelearningsystem.net\/xyz\/revision-notes\/a-level-chemistry\/edexcel\/topic-1-atomic-structure-and-the-periodic-table\/ionisation-energy\/trends-in-a-group\/\">Trends in a Group<\/a>\r\n          <\/li>\r\n        <\/ul>\r\n      <\/li>\r\n\r\n      <li>\r\n        <a href=\"https:\/\/www.onlinelearningsystem.net\/xyz\/revision-notes\/a-level-chemistry\/edexcel\/topic-1-atomic-structure-and-the-periodic-table\/periodic-trends\/\">Periodic Trends<\/a>\r\n      <\/li>\r\n    <\/ul>\r\n  <\/div>\r\n\r\n  <div class=\"ols-topic-group\">\r\n    <h4>Next Topics<\/h4>\r\n\r\n    <ul class=\"ols-topic-list\">\r\n      <li>\r\n        <a href=\"https:\/\/www.onlinelearningsystem.net\/xyz\/revision-notes\/a-level-chemistry\/edexcel\/topic-2-bonding-and-structure\/\">Bonding &amp; Structure<\/a>\r\n      <\/li>\r\n      <li>\r\n        <a href=\"https:\/\/www.onlinelearningsystem.net\/xyz\/revision-notes\/a-level-chemistry\/edexcel\/topic-3-redox-i\/\">Redox I<\/a>\r\n      <\/li>\r\n      <li>\r\n        <a href=\"https:\/\/www.onlinelearningsystem.net\/xyz\/revision-notes\/a-level-chemistry\/edexcel\/topic-4-inorganic-chemistry-and-the-periodic-table\/\">Inorganic Chemistry &amp; The Periodic Table<\/a>\r\n      <\/li>\r\n    <\/ul>\r\n  <\/div>\r\n<\/aside>\r\n\r\n<script>\r\n(function() {\r\n  function normalisePath(path) {\r\n    return String(path || '')\r\n      .split('?')[0]\r\n      .split('#')[0]\r\n      .replace(\/\\\/+$\/, '')\r\n      .toLowerCase();\r\n  }\r\n\r\n  function highlightActive() {\r\n    var sidebar = document.querySelector('.ols-sidebar');\r\n    if (!sidebar) return false;\r\n\r\n    var currentPath = normalisePath(window.location.pathname);\r\n    var links = sidebar.querySelectorAll('a[href]');\r\n    var matched = null;\r\n    var matchedLength = 0;\r\n\r\n    sidebar.querySelectorAll('.active, .active-main, .parent-active').forEach(function(item) {\r\n      item.classList.remove('active', 'active-main', 'parent-active');\r\n    });\r\n\r\n    sidebar.querySelectorAll('a[data-ols-disabled-parent=\"1\"], a[aria-current]').forEach(function(a) {\r\n      a.removeAttribute('aria-current');\r\n      a.removeAttribute('tabindex');\r\n      a.removeAttribute('data-ols-disabled-parent');\r\n    });\r\n\r\n    links.forEach(function(a) {\r\n      try {\r\n        var href = a.getAttribute('href');\r\n\r\n        if (!href || href === '#' || href.charAt(0) === '#') {\r\n          return;\r\n        }\r\n\r\n        var linkPath = normalisePath(new URL(href, window.location.origin).pathname);\r\n\r\n        if (!linkPath) {\r\n          return;\r\n        }\r\n\r\n        if (currentPath === linkPath || currentPath.indexOf(linkPath + '\/') === 0) {\r\n          if (linkPath.length > matchedLength) {\r\n            matched = a;\r\n            matchedLength = linkPath.length;\r\n          }\r\n        }\r\n      } catch(e) {}\r\n    });\r\n\r\n    if (matched) {\r\n      var matchedLi = matched.closest('li');\r\n      var parentSub = matched.closest('.ols-subtopic-list');\r\n\r\n      if (parentSub) {\r\n        if (matchedLi) {\r\n          matchedLi.classList.add('active');\r\n          matched.setAttribute('aria-current', 'page');\r\n        }\r\n\r\n        var parentLi = parentSub.closest('li');\r\n\r\n        if (parentLi) {\r\n          parentLi.classList.add('parent-active', 'active-main');\r\n\r\n          var parentLink = parentLi.querySelector(':scope > a');\r\n\r\n          if (parentLink) {\r\n            parentLink.setAttribute('aria-current', 'true');\r\n            parentLink.setAttribute('tabindex', '-1');\r\n            parentLink.setAttribute('data-ols-disabled-parent', '1');\r\n          }\r\n        }\r\n      } else {\r\n        if (matchedLi) {\r\n          matchedLi.classList.add('parent-active', 'active-main');\r\n          matched.setAttribute('aria-current', 'page');\r\n          matched.setAttribute('tabindex', '-1');\r\n          matched.setAttribute('data-ols-disabled-parent', '1');\r\n        }\r\n      }\r\n    }\r\n\r\n    return true;\r\n  }\r\n\r\n  if (!highlightActive()) {\r\n    document.addEventListener('DOMContentLoaded', highlightActive);\r\n  }\r\n})();\r\n<\/script>\n\n  <main class=\"ols-main\">\n      <nav class=\"ols-breadcrumbs\" aria-label=\"Breadcrumb\">\n        <a href=\"https:\/\/www.onlinelearningsystem.net\/xyz\/revision-notes\/\">Revision Notes<\/a> \/\n        <a href=\"https:\/\/www.onlinelearningsystem.net\/xyz\/revision-notes\/a-level-chemistry\/\">A Level Chemistry<\/a> \/\n        <a href=\"https:\/\/www.onlinelearningsystem.net\/xyz\/revision-notes\/a-level-chemistry\/edexcel\/\">Edexcel<\/a> \/\n        <a href=\"https:\/\/www.onlinelearningsystem.net\/xyz\/revision-notes\/a-level-chemistry\/edexcel\/topic-1-atomic-structure-and-the-periodic-table\/\">Topic 1 Atomic Structure &amp; The Periodic Table<\/a> \/\n        <a href=\"https:\/\/www.onlinelearningsystem.net\/xyz\/revision-notes\/a-level-chemistry\/edexcel\/topic-1-atomic-structure-and-the-periodic-table\/mass-spectrometry\/\">Mass Spectrometry<\/a> \/\n        <span>The Mass Spectrometer<\/span>\n      <\/nav>\n\n      <header class=\"ols-title-card\">\n        <h1>The Mass Spectrometer<\/h1>\n        <p class=\"ols-page-intro\">A concise revision guide to how a mass spectrometer works, including vaporisation, ionisation by electron bombardment, acceleration, deflection, detection and the interpretation of m\/z values.<\/p>\n\n        <div class=\"ols-badges\">\n          <div class=\"ols-badge\">Unit: Paper 1<\/div>\n          <div class=\"ols-badge\">Topic 1: Atomic Structure &amp; The Periodic Table<\/div>\n          <div class=\"ols-badge\">9CH0\/01<\/div>\n        <\/div>\n\n        <div class=\"ols-author\">\n\n    <img decoding=\"async\"\n      class=\"ols-author-avatar-img\"\n      src=\"https:\/\/www.onlinelearningsystem.net\/xyz\/wp-content\/uploads\/2026\/05\/Author-Profile.jpeg\"\n      alt=\"Dr. Mohammed Al-Fatah\"\n    >\n\n    <div class=\"ols-author-content\">\n\n      <h2 class=\"ols-author-title\">\n        Written by: Dr. Mohammed Al-Fatah\n      <\/h2>\n\n      <p class=\"ols-author-description\">\n        Chemistry specialist revision notes for A Level Chemistry.\n      <\/p>\n\n      <a class=\"ols-linkedin-pill\" href=\"https:\/\/www.linkedin.com\/in\/doctormohammedfatah\/\" target=\"_blank\" rel=\"noopener noreferrer\">\n        <svg class=\"ols-linkedin-icon\" viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\">\n          <path d=\"M4.98 3.5C4.98 4.88 3.86 6 2.48 6S0 4.88 0 3.5 1.12 1 2.48 1s2.5 1.12 2.5 2.5zM.5 8h4V24h-4V8zm7 0h3.8v2.2h.1c.5-.9 1.8-2.2 3.9-2.2 4.2 0 5 2.8 5 6.4V24h-4v-7.6c0-1.8 0-4.2-2.6-4.2s-3 2-3 4v7.8h-4V8z\"\/>\n        <\/svg>\n        View LinkedIn Profile\n      <\/a>\n\n    <\/div>\n\n  <\/div>\n      <\/header>\n\n      <article class=\"ols-note-card soft\">\n        <div class=\"ols-note-title\"><div class=\"ols-note-icon\">1<\/div><h2>What a Mass Spectrometer Does<\/h2><\/div>\n        <p>A <strong>mass spectrometer<\/strong> separates positive ions according to their <strong>mass-to-charge ratio<\/strong>, written as <strong>m\/z<\/strong>.<\/p>\n        <p>It is used to identify isotopes, compare their relative abundance, and provide data used to calculate relative atomic mass. The sample must be converted into particles that can move through the machine and be detected as ions.<\/p>\n        <p>The main sequence is: <strong>vaporisation<\/strong>, <strong>ionisation<\/strong>, <strong>acceleration<\/strong>, <strong>deflection<\/strong> and <strong>detection<\/strong>.<\/p>\n        <div class=\"ols-key-box\"><p><strong>Key idea:<\/strong> The mass spectrometer does not directly weigh atoms. It forms positive ions, separates them by m\/z, and records detector signals that show relative abundance.<\/p><\/div>\n        <div class=\"ols-figure-card\">\n          <div class=\"ols-figure-image\">\n            <img decoding=\"async\" src=\"https:\/\/www.onlinelearningsystem.net\/xyz\/wp-content\/uploads\/2026\/05\/The-mass-spectrometer-explained.webp\" alt=\"Diagram showing the main stages of an electron bombardment mass spectrometer\">\n          <\/div>\n          <div class=\"ols-figure-caption\">\n            <p>The detector records ions that pass through the selected path, allowing the computer to build a spectrum from their m\/z values and abundances.<\/p>\n          <\/div>\n        <\/div>\n      <\/article>\n\n      <article class=\"ols-note-card\">\n        <div class=\"ols-note-title\"><div class=\"ols-note-icon\">2<\/div><h2>Why the Instrument Uses a Vacuum<\/h2><\/div>\n        <p>The mass spectrometer operates at <strong>low pressure<\/strong> and under a <strong>vacuum<\/strong>.<\/p>\n        <p>This matters because air particles would otherwise collide with the ions, change their path, or become ionised themselves. If air particles reached the detector, they could produce extra signals and reduce the reliability of the spectrum.<\/p>\n        <div class=\"ols-key-box\"><p><strong>Exam focus:<\/strong> A vacuum prevents collisions with air particles and prevents air particles from being ionised and detected.<\/p><\/div>\n      <\/article>\n\n      <article class=\"ols-note-card purple\">\n        <div class=\"ols-note-title\"><div class=\"ols-note-icon\">3<\/div><h2>Stage 1: Vaporisation and Ionisation<\/h2><\/div>\n        <p>The sample must be in the <strong>gaseous state<\/strong> so that its particles can move through the mass spectrometer. If the sample is not already gaseous, it is first <strong>vaporised<\/strong>.<\/p>\n        <p>In electron bombardment, an electron gun fires high-energy electrons at the gaseous atoms or molecules. These electrons collide with the sample and remove an outer electron, forming a <strong>positive ion<\/strong>.<\/p>\n        <p>For an atom X, this can be represented as: <strong>X(g) + e<sup>&#8211;<\/sup> \u2192 X<sup>+<\/sup>(g) + 2e<sup>&#8211;<\/sup><\/strong>.<\/p>\n        <div class=\"ols-key-box\"><p><strong>Remember:<\/strong> Ionisation produces positive ions because an electron has been removed.<\/p><\/div>\n        <!--\n  Copyright Notice:\n  This HTML, CSS, JavaScript animation and educational design are the intellectual property of Online Learning System.\n  Unauthorised copying, redistribution, resale, modification, republication, scraping, or reuse is prohibited.\n  \u00a9 Online Learning System. All rights reserved.\n-->\n\n<section id=\"ols-ms-ionisation-electron-bombardment\" class=\"ols-ms-ionisation-card is-playing\">\n  <style>\n    #ols-ms-ionisation-electron-bombardment {\n      --ols-navy: #1C244B;\n      --ols-blue: #2563eb;\n      --ols-red: #c81e1e;\n      --ols-gold: #c9973a;\n      --ols-soft-blue: #eef4ff;\n      --ols-border: rgba(28, 36, 75, 0.14);\n      --ols-shadow: 0 14px 34px rgba(28, 36, 75, 0.12);\n      --ols-inner-shadow: 0 10px 26px rgba(28, 36, 75, 0.08);\n      width: 100%;\n      margin: 28px auto;\n      font-family: Poppins, Arial, sans-serif;\n      color: var(--ols-navy);\n    }\n\n    #ols-ms-ionisation-electron-bombardment,\n    #ols-ms-ionisation-electron-bombardment * {\n      box-sizing: border-box;\n    }\n\n    #ols-ms-ionisation-electron-bombardment.ols-paused *,\n    #ols-ms-ionisation-electron-bombardment.ols-paused *::before,\n    #ols-ms-ionisation-electron-bombardment.ols-paused *::after {\n      animation-play-state: paused !important;\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-ms-card {\n      width: 100%;\n      background: linear-gradient(180deg, #ffffff 0%, #f8fbff 100%);\n      border: 1px solid var(--ols-border);\n      border-radius: 28px;\n      box-shadow: var(--ols-shadow);\n      overflow: hidden;\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-ms-header {\n      padding: 24px 26px 16px;\n      border-bottom: 1px solid rgba(28, 36, 75, 0.08);\n      background:\n        radial-gradient(circle at top left, rgba(201, 151, 58, 0.16), transparent 34%),\n        radial-gradient(circle at top right, rgba(37, 99, 235, 0.12), transparent 32%),\n        #ffffff;\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-ms-pill {\n      display: inline-flex;\n      align-items: center;\n      gap: 8px;\n      padding: 7px 12px;\n      border-radius: 999px;\n      background: rgba(37, 99, 235, 0.10);\n      color: var(--ols-blue);\n      border: 1px solid rgba(37, 99, 235, 0.18);\n      font-size: 13px;\n      font-weight: 700;\n      margin-bottom: 12px;\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-ms-title {\n      margin: 0;\n      font-size: clamp(26px, 3vw, 40px);\n      line-height: 1.12;\n      font-weight: 700;\n      color: var(--ols-navy);\n      letter-spacing: -0.03em;\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-ms-subtitle {\n      margin: 12px 0 0;\n      font-size: clamp(16px, 1.4vw, 22px);\n      line-height: 1.55;\n      font-weight: 300;\n      color: rgba(28, 36, 75, 0.82);\n      max-width: 980px;\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-stage-wrap {\n      position: relative;\n      width: 100%;\n      background:\n        radial-gradient(circle at 18% 45%, rgba(201, 151, 58, 0.10), transparent 26%),\n        radial-gradient(circle at 66% 50%, rgba(37, 99, 235, 0.10), transparent 28%),\n        linear-gradient(180deg, #ffffff 0%, #f7f9fc 100%);\n      border-bottom: 1px solid rgba(28, 36, 75, 0.08);\n      overflow: hidden;\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-stage {\n      position: relative;\n      width: 100%;\n      height: 560px;\n      overflow: hidden;\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-vacuum-label {\n      position: absolute;\n      top: 16px;\n      left: 18px;\n      z-index: 5;\n      display: inline-flex;\n      align-items: center;\n      padding: 8px 12px;\n      border-radius: 999px;\n      background: rgba(255, 255, 255, 0.90);\n      border: 1px solid rgba(28, 36, 75, 0.10);\n      box-shadow: 0 6px 18px rgba(28, 36, 75, 0.10);\n      font-size: 13px;\n      font-weight: 700;\n      color: var(--ols-navy);\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-hint {\n      position: absolute;\n      top: 16px;\n      right: 18px;\n      z-index: 5;\n      display: inline-flex;\n      align-items: center;\n      padding: 8px 12px;\n      border-radius: 999px;\n      background: rgba(255, 255, 255, 0.90);\n      border: 1px solid rgba(28, 36, 75, 0.10);\n      box-shadow: 0 6px 18px rgba(28, 36, 75, 0.10);\n      font-size: 13px;\n      font-weight: 700;\n      color: var(--ols-navy);\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-filament-area {\n      position: absolute;\n      left: 7%;\n      top: 40%;\n      width: 170px;\n      height: 140px;\n      transform: translateY(-50%);\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-filament-support {\n      position: absolute;\n      left: 0;\n      top: 23px;\n      width: 42px;\n      height: 92px;\n      border-radius: 16px;\n      background: linear-gradient(180deg, #d8dde8, #aeb7c8);\n      border: 1px solid rgba(28, 36, 75, 0.18);\n      box-shadow: inset 0 2px 8px rgba(255, 255, 255, 0.55);\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-filament-support.right {\n      left: 128px;\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-filament-wire {\n      position: absolute;\n      left: 30px;\n      top: 48px;\n      width: 112px;\n      height: 44px;\n      border-radius: 999px;\n      border-top: 8px solid #77614a;\n      border-bottom: 8px solid #77614a;\n      filter: drop-shadow(0 0 4px rgba(119, 97, 74, 0.35));\n      animation: olsFilamentHeat 8s ease-in-out infinite;\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-filament-wire::before,\n    #ols-ms-ionisation-electron-bombardment .ols-filament-wire::after {\n      content: \"\";\n      position: absolute;\n      top: 8px;\n      width: 38px;\n      height: 16px;\n      border-radius: 999px;\n      border-top: 7px solid #77614a;\n      animation: olsFilamentHeat 8s ease-in-out infinite;\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-filament-wire::before {\n      left: 14px;\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-filament-wire::after {\n      right: 14px;\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-filament-glow {\n      position: absolute;\n      left: 8px;\n      top: 15px;\n      width: 154px;\n      height: 112px;\n      border-radius: 50%;\n      background: radial-gradient(circle, rgba(255, 191, 78, 0.68), rgba(255, 118, 36, 0.16), transparent 68%);\n      opacity: 0;\n      transform: scale(0.78);\n      animation: olsFilamentGlow 8s ease-in-out infinite;\n      pointer-events: none;\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-filament-label {\n      position: absolute;\n      left: 0;\n      top: 124px;\n      width: 170px;\n      text-align: center;\n      font-size: 14px;\n      line-height: 1.35;\n      font-weight: 700;\n      color: var(--ols-navy);\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-energy-label {\n      position: absolute;\n      left: 4%;\n      top: 155px;\n      font-size: 15px;\n      line-height: 1.35;\n      font-weight: 700;\n      color: var(--ols-red);\n      opacity: 0;\n      animation: olsEnergyLabel 8s ease-in-out infinite;\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-electron {\n      position: absolute;\n      width: 20px;\n      height: 20px;\n      border-radius: 50%;\n      background:\n        radial-gradient(circle at 32% 28%, #ffffff, #ff8a8a 20%, #c81e1e 72%);\n      box-shadow:\n        0 0 0 3px rgba(200, 30, 30, 0.14),\n        0 0 18px rgba(200, 30, 30, 0.50);\n      color: #ffffff;\n      font-size: 12px;\n      font-weight: 800;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      z-index: 6;\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-electron::after {\n      content: \"\u2212\";\n      transform: translateY(-1px);\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-incoming-electron {\n      left: 17%;\n      top: 47%;\n      opacity: 0;\n      animation: olsIncomingElectron 8s linear infinite;\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-incoming-trail {\n      position: absolute;\n      left: 18%;\n      top: calc(47% + 9px);\n      width: 0;\n      height: 3px;\n      border-radius: 999px;\n      background: linear-gradient(90deg, rgba(200, 30, 30, 0), rgba(200, 30, 30, 0.75));\n      opacity: 0;\n      animation: olsIncomingTrail 8s linear infinite;\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-atom-area {\n      position: absolute;\n      left: 58%;\n      top: 48%;\n      width: 230px;\n      height: 230px;\n      transform: translate(-50%, -50%);\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-orbit {\n      position: absolute;\n      inset: 35px;\n      border-radius: 50%;\n      border: 2px dashed rgba(37, 99, 235, 0.45);\n      animation: olsOrbitFade 8s ease-in-out infinite;\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-nucleus {\n      position: absolute;\n      left: 50%;\n      top: 50%;\n      width: 64px;\n      height: 64px;\n      transform: translate(-50%, -50%);\n      border-radius: 50%;\n      background:\n        radial-gradient(circle at 32% 28%, #ffffff, #9cc3ff 26%, #2563eb 78%);\n      box-shadow:\n        0 12px 28px rgba(37, 99, 235, 0.22),\n        0 0 0 8px rgba(37, 99, 235, 0.08);\n      display: grid;\n      place-items: center;\n      font-size: 20px;\n      font-weight: 800;\n      color: #ffffff;\n      animation: olsNucleusIonise 8s ease-in-out infinite;\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-h-label {\n      position: absolute;\n      inset: 0;\n      display: grid;\n      place-items: center;\n      opacity: 1;\n      animation: olsHLabel 8s ease-in-out infinite;\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-hplus-label {\n      position: absolute;\n      inset: 0;\n      display: grid;\n      place-items: center;\n      opacity: 0;\n      animation: olsHPlusLabel 8s ease-in-out infinite;\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-bound-electron {\n      left: calc(50% - 88px);\n      top: calc(50% - 8px);\n      opacity: 1;\n      animation: olsBoundElectron 8s ease-in-out infinite;\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-hit-flash {\n      position: absolute;\n      left: calc(50% - 78px);\n      top: calc(50% + 1px);\n      width: 28px;\n      height: 28px;\n      border-radius: 50%;\n      background: radial-gradient(circle, rgba(255, 255, 255, 1), rgba(255, 195, 64, 0.72), rgba(200, 30, 30, 0));\n      transform: translate(-50%, -50%) scale(0.3);\n      opacity: 0;\n      animation: olsHitFlash 8s ease-in-out infinite;\n      z-index: 8;\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-out-electron-one {\n      left: calc(58% - 88px);\n      top: calc(48% + 2px);\n      opacity: 0;\n      animation: olsOutgoingElectronOne 8s linear infinite;\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-out-electron-two {\n      left: calc(58% - 88px);\n      top: calc(48% + 2px);\n      opacity: 0;\n      animation: olsOutgoingElectronTwo 8s linear infinite;\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-ion-label {\n      position: absolute;\n      left: calc(58% - 42px);\n      top: calc(48% + 92px);\n      padding: 8px 12px;\n      border-radius: 999px;\n      background: rgba(255, 255, 255, 0.92);\n      border: 1px solid rgba(37, 99, 235, 0.18);\n      box-shadow: 0 8px 22px rgba(28, 36, 75, 0.10);\n      color: var(--ols-blue);\n      font-size: 14px;\n      font-weight: 800;\n      opacity: 0;\n      animation: olsIonLabel 8s ease-in-out infinite;\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-equation {\n      position: absolute;\n      left: 50%;\n      bottom: 28px;\n      transform: translateX(-50%);\n      width: min(88%, 780px);\n      padding: 16px 20px;\n      border-radius: 20px;\n      background: rgba(255, 255, 255, 0.94);\n      border: 1px solid rgba(28, 36, 75, 0.12);\n      box-shadow: 0 12px 28px rgba(28, 36, 75, 0.10);\n      text-align: center;\n      font-size: clamp(18px, 2.1vw, 28px);\n      line-height: 1.35;\n      font-weight: 800;\n      color: var(--ols-navy);\n      opacity: 0;\n      animation: olsEquationShow 8s ease-in-out infinite;\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-equation span {\n      color: var(--ols-red);\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-step-label {\n      position: absolute;\n      left: 50%;\n      top: 84px;\n      transform: translateX(-50%);\n      width: min(88%, 760px);\n      min-height: 64px;\n      text-align: center;\n      font-size: clamp(16px, 1.6vw, 22px);\n      line-height: 1.45;\n      font-weight: 700;\n      color: rgba(28, 36, 75, 0.88);\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-step-label span {\n      position: absolute;\n      left: 0;\n      right: 0;\n      display: block;\n      opacity: 0;\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-step-one {\n      animation: olsStepOneText 8s ease-in-out infinite;\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-step-two {\n      animation: olsStepTwoText 8s ease-in-out infinite;\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-controls {\n      display: flex;\n      flex-wrap: wrap;\n      gap: 10px;\n      padding: 16px 18px;\n      background: #ffffff;\n      border-bottom: 1px solid rgba(28, 36, 75, 0.08);\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-btn {\n      appearance: none;\n      border: 1px solid rgba(28, 36, 75, 0.14);\n      background: #ffffff;\n      color: var(--ols-navy);\n      border-radius: 999px;\n      padding: 10px 15px;\n      font-family: Poppins, Arial, sans-serif;\n      font-size: 14px;\n      font-weight: 700;\n      cursor: pointer;\n      transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease, color 0.2s ease;\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-btn:hover {\n      transform: translateY(-2px);\n      box-shadow: 0 8px 20px rgba(28, 36, 75, 0.12);\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-btn.is-active {\n      background: var(--ols-navy);\n      color: #ffffff;\n      border-color: var(--ols-navy);\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-explanation {\n      padding: 22px 26px 26px;\n      background: #ffffff;\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-key-message {\n      margin: 0;\n      padding: 16px 18px;\n      border-radius: 18px;\n      background: var(--ols-soft-blue);\n      border: 1px solid rgba(37, 99, 235, 0.14);\n      font-size: 16px;\n      line-height: 1.65;\n      font-weight: 300;\n      color: rgba(28, 36, 75, 0.88);\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-key-message strong {\n      font-weight: 800;\n      color: var(--ols-navy);\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-explanation-grid {\n      display: grid;\n      grid-template-columns: repeat(3, minmax(0, 1fr));\n      gap: 14px;\n      margin-top: 16px;\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-info-box {\n      border-radius: 18px;\n      padding: 16px;\n      background: #f8fbff;\n      border: 1px solid rgba(28, 36, 75, 0.10);\n      box-shadow: var(--ols-inner-shadow);\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-info-box strong {\n      display: block;\n      font-size: 15px;\n      margin-bottom: 6px;\n      color: var(--ols-navy);\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-info-box span {\n      display: block;\n      font-size: 14px;\n      line-height: 1.55;\n      font-weight: 300;\n      color: rgba(28, 36, 75, 0.80);\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-copyright-footer {\n      padding: 16px 22px 20px;\n      background: #ffffff;\n      border-top: 1px solid rgba(28, 36, 75, 0.08);\n      text-align: center;\n      font-size: 13px;\n      line-height: 1.55;\n      font-weight: 500;\n      color: rgba(28, 36, 75, 0.70);\n    }\n\n    #ols-ms-ionisation-electron-bombardment .ols-copyright-footer strong {\n      color: var(--ols-navy);\n      font-weight: 800;\n    }\n\n    @keyframes olsFilamentHeat {\n      0%, 10% {\n        border-color: #77614a;\n        filter: drop-shadow(0 0 4px rgba(119, 97, 74, 0.35));\n      }\n\n      18%, 35% {\n        border-color: #ff9f32;\n        filter:\n          drop-shadow(0 0 8px rgba(255, 159, 50, 0.80))\n          drop-shadow(0 0 18px rgba(255, 98, 34, 0.48));\n      }\n\n      42%, 100% {\n        border-color: #d46f29;\n        filter: drop-shadow(0 0 7px rgba(212, 111, 41, 0.58));\n      }\n    }\n\n    @keyframes olsFilamentGlow {\n      0%, 10% {\n        opacity: 0;\n        transform: scale(0.78);\n      }\n\n      18%, 35% {\n        opacity: 1;\n        transform: scale(1.05);\n      }\n\n      45%, 100% {\n        opacity: 0.35;\n        transform: scale(0.94);\n      }\n    }\n\n    @keyframes olsEnergyLabel {\n      0%, 10% { opacity: 0; transform: translateY(8px); }\n      16%, 34% { opacity: 1; transform: translateY(0); }\n      42%, 100% { opacity: 0; transform: translateY(-6px); }\n    }\n\n    @keyframes olsIncomingElectron {\n      0%, 20% {\n        left: 17%;\n        opacity: 0;\n        transform: translate(0, 0) scale(0.8);\n      }\n\n      24% {\n        left: 17%;\n        opacity: 1;\n        transform: translate(0, 0) scale(1);\n      }\n\n      49% {\n        left: calc(58% - 88px);\n        opacity: 1;\n        transform: translate(0, 4px) scale(1);\n      }\n\n      52%, 100% {\n        left: calc(58% - 88px);\n        opacity: 0;\n        transform: translate(0, 4px) scale(0.55);\n      }\n    }\n\n    @keyframes olsIncomingTrail {\n      0%, 22% {\n        opacity: 0;\n        width: 0;\n      }\n\n      32% {\n        opacity: 0.75;\n        width: 160px;\n      }\n\n      49% {\n        opacity: 0.75;\n        width: calc(40% - 100px);\n      }\n\n      54%, 100% {\n        opacity: 0;\n        width: calc(40% - 100px);\n      }\n    }\n\n    @keyframes olsOrbitFade {\n      0%, 48% {\n        opacity: 1;\n        transform: scale(1);\n      }\n\n      55%, 100% {\n        opacity: 0.18;\n        transform: scale(0.94);\n      }\n    }\n\n    @keyframes olsNucleusIonise {\n      0%, 48% {\n        box-shadow:\n          0 12px 28px rgba(37, 99, 235, 0.22),\n          0 0 0 8px rgba(37, 99, 235, 0.08);\n      }\n\n      53%, 100% {\n        box-shadow:\n          0 12px 28px rgba(37, 99, 235, 0.28),\n          0 0 0 12px rgba(37, 99, 235, 0.16),\n          0 0 26px rgba(37, 99, 235, 0.24);\n      }\n    }\n\n    @keyframes olsHLabel {\n      0%, 49% { opacity: 1; }\n      54%, 100% { opacity: 0; }\n    }\n\n    @keyframes olsHPlusLabel {\n      0%, 49% { opacity: 0; }\n      54%, 100% { opacity: 1; }\n    }\n\n    @keyframes olsBoundElectron {\n      0%, 48% {\n        opacity: 1;\n        transform: rotate(0deg) translate(0, 0) scale(1);\n      }\n\n      52%, 100% {\n        opacity: 0;\n        transform: rotate(0deg) translate(0, 0) scale(0.45);\n      }\n    }\n\n    @keyframes olsHitFlash {\n      0%, 47% {\n        opacity: 0;\n        transform: translate(-50%, -50%) scale(0.3);\n      }\n\n      50% {\n        opacity: 1;\n        transform: translate(-50%, -50%) scale(2.2);\n      }\n\n      58%, 100% {\n        opacity: 0;\n        transform: translate(-50%, -50%) scale(3.2);\n      }\n    }\n\n    @keyframes olsOutgoingElectronOne {\n      0%, 49% {\n        opacity: 0;\n        transform: translate(0, 0) scale(0.8);\n      }\n\n      52% {\n        opacity: 1;\n        transform: translate(0, 0) scale(1);\n      }\n\n      78%, 100% {\n        opacity: 1;\n        transform: translate(410px, -120px) scale(1);\n      }\n    }\n\n    @keyframes olsOutgoingElectronTwo {\n      0%, 49% {\n        opacity: 0;\n        transform: translate(0, 0) scale(0.8);\n      }\n\n      52% {\n        opacity: 1;\n        transform: translate(0, 0) scale(1);\n      }\n\n      78%, 100% {\n        opacity: 1;\n        transform: translate(410px, 128px) scale(1);\n      }\n    }\n\n    @keyframes olsIonLabel {\n      0%, 51% {\n        opacity: 0;\n        transform: translateY(8px);\n      }\n\n      58%, 100% {\n        opacity: 1;\n        transform: translateY(0);\n      }\n    }\n\n    @keyframes olsEquationShow {\n      0%, 58% {\n        opacity: 0;\n        transform: translateX(-50%) translateY(12px);\n      }\n\n      66%, 100% {\n        opacity: 1;\n        transform: translateX(-50%) translateY(0);\n      }\n    }\n\n    @keyframes olsStepOneText {\n      0%, 8% {\n        opacity: 0;\n        transform: translateY(8px);\n      }\n\n      14%, 39% {\n        opacity: 1;\n        transform: translateY(0);\n      }\n\n      45%, 100% {\n        opacity: 0;\n        transform: translateY(-8px);\n      }\n    }\n\n    @keyframes olsStepTwoText {\n      0%, 49% {\n        opacity: 0;\n        transform: translateY(8px);\n      }\n\n      56%, 100% {\n        opacity: 1;\n        transform: translateY(0);\n      }\n    }\n\n    @media (max-width: 820px) {\n      #ols-ms-ionisation-electron-bombardment .ols-stage {\n        height: 500px;\n      }\n\n      #ols-ms-ionisation-electron-bombardment .ols-filament-area {\n        left: 4%;\n        transform: translateY(-50%) scale(0.82);\n        transform-origin: left center;\n      }\n\n      #ols-ms-ionisation-electron-bombardment .ols-atom-area {\n        left: 62%;\n        transform: translate(-50%, -50%) scale(0.88);\n      }\n\n      #ols-ms-ionisation-electron-bombardment .ols-explanation-grid {\n        grid-template-columns: 1fr;\n      }\n\n      #ols-ms-ionisation-electron-bombardment .ols-hint {\n        display: none;\n      }\n    }\n\n    @media (max-width: 560px) {\n      #ols-ms-ionisation-electron-bombardment .ols-ms-header,\n      #ols-ms-ionisation-electron-bombardment .ols-explanation {\n        padding-left: 18px;\n        padding-right: 18px;\n      }\n\n      #ols-ms-ionisation-electron-bombardment .ols-stage {\n        height: 460px;\n      }\n\n      #ols-ms-ionisation-electron-bombardment .ols-filament-area {\n        left: 1%;\n        top: 42%;\n        transform: translateY(-50%) scale(0.68);\n      }\n\n      #ols-ms-ionisation-electron-bombardment .ols-atom-area {\n        left: 66%;\n        top: 48%;\n        transform: translate(-50%, -50%) scale(0.72);\n      }\n\n      #ols-ms-ionisation-electron-bombardment .ols-step-label {\n        top: 70px;\n        font-size: 15px;\n      }\n\n      #ols-ms-ionisation-electron-bombardment .ols-equation {\n        bottom: 18px;\n        padding: 14px;\n      }\n\n      #ols-ms-ionisation-electron-bombardment .ols-controls {\n        padding: 14px;\n      }\n\n      #ols-ms-ionisation-electron-bombardment .ols-btn {\n        width: 100%;\n      }\n    }\n  <\/style>\n\n  <div class=\"ols-ms-card\">\n    <div class=\"ols-ms-header\">\n      <div class=\"ols-ms-pill\">Mass spectrometer animation<\/div>\n      <h2 class=\"ols-ms-title\">Ionisation by electron bombardment<\/h2>\n      <p class=\"ols-ms-subtitle\">\n        This animation shows a hot filament releasing a high-energy electron. The electron collides with the outer electron of a hydrogen atom, removing it and forming a positive H\u207a ion.\n      <\/p>\n    <\/div>\n\n    <div class=\"ols-stage-wrap\">\n      <div class=\"ols-stage\">\n        <div class=\"ols-vacuum-label\">Ionisation chamber<\/div>\n        <div class=\"ols-hint\">Pause or play using the control below<\/div>\n\n        <div class=\"ols-step-label\">\n          <span class=\"ols-step-one\">1. The filament heats up and releases a high-energy electron.<\/span>\n          <span class=\"ols-step-two\">2. The incoming electron knocks out the outer electron, forming H\u207a and two electrons.<\/span>\n        <\/div>\n\n        <div class=\"ols-energy-label\">filament energy increases<\/div>\n\n        <div class=\"ols-filament-area\" aria-label=\"hot filament\">\n          <div class=\"ols-filament-glow\"><\/div>\n          <div class=\"ols-filament-support\"><\/div>\n          <div class=\"ols-filament-support right\"><\/div>\n          <div class=\"ols-filament-wire\"><\/div>\n          <div class=\"ols-filament-label\">hot filament<\/div>\n        <\/div>\n\n        <div class=\"ols-incoming-trail\"><\/div>\n        <div class=\"ols-electron ols-incoming-electron\" aria-label=\"incoming high-energy electron\"><\/div>\n\n        <div class=\"ols-atom-area\" aria-label=\"hydrogen atom becoming hydrogen ion\">\n          <div class=\"ols-orbit\"><\/div>\n          <div class=\"ols-nucleus\">\n            <span class=\"ols-h-label\">H<\/span>\n            <span class=\"ols-hplus-label\">H\u207a<\/span>\n          <\/div>\n          <div class=\"ols-electron ols-bound-electron\" aria-label=\"outer electron in hydrogen atom\"><\/div>\n          <div class=\"ols-hit-flash\"><\/div>\n        <\/div>\n\n        <div class=\"ols-electron ols-out-electron-one\" aria-label=\"ejected electron\"><\/div>\n        <div class=\"ols-electron ols-out-electron-two\" aria-label=\"incoming electron leaving after collision\"><\/div>\n\n        <div class=\"ols-ion-label\">positive ion formed: H\u207a<\/div>\n\n        <div class=\"ols-equation\">\n          H(g) + <span>e\u207b<\/span> \u2192 H\u207a(g) + <span>2e\u207b<\/span>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"ols-controls\">\n      <button type=\"button\" class=\"ols-btn is-active\" id=\"olsMsIonPauseBtn\">Pause animation<\/button>\n    <\/div>\n\n    <div class=\"ols-explanation\">\n      <p class=\"ols-key-message\">\n        <strong>Key idea:<\/strong> in electron bombardment ionisation, a high-energy electron knocks an electron out of an atom or molecule. Losing an electron forms a positive ion. For hydrogen, the process is <strong>H(g) + e\u207b \u2192 H\u207a(g) + 2e\u207b<\/strong>.\n      <\/p>\n\n      <div class=\"ols-explanation-grid\">\n        <div class=\"ols-info-box\">\n          <strong>Hot filament<\/strong>\n          <span>The filament is heated, so electrons gain enough energy to be emitted into the ionisation chamber.<\/span>\n        <\/div>\n\n        <div class=\"ols-info-box\">\n          <strong>Electron collision<\/strong>\n          <span>The incoming high-energy electron collides with the electron in the hydrogen atom.<\/span>\n        <\/div>\n\n        <div class=\"ols-info-box\">\n          <strong>Positive ion forms<\/strong>\n          <span>The hydrogen atom loses its electron, leaving H\u207a. Two electrons leave after the collision.<\/span>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"ols-copyright-footer\">\n      <strong>\u00a9 Online Learning System.<\/strong> This educational animation, code structure, visual design and explanatory content are protected. Unauthorised copying, redistribution, resale, modification or republication is prohibited.\n    <\/div>\n  <\/div>\n\n  <script>\n    \/*\n      Copyright Notice:\n      This HTML, CSS, JavaScript animation and educational design are the intellectual property of Online Learning System.\n      Unauthorised copying, redistribution, resale, modification, republication, scraping, or reuse is prohibited.\n      \u00a9 Online Learning System. All rights reserved.\n    *\/\n\n    (function () {\n      const card = document.getElementById(\"ols-ms-ionisation-electron-bombardment\");\n      const pauseBtn = document.getElementById(\"olsMsIonPauseBtn\");\n\n      if (!card || !pauseBtn) {\n        return;\n      }\n\n      let manuallyPaused = false;\n\n      function pause() {\n        card.classList.add(\"ols-paused\");\n        pauseBtn.textContent = \"Play animation\";\n        pauseBtn.classList.remove(\"is-active\");\n      }\n\n      function play() {\n        card.classList.remove(\"ols-paused\");\n        pauseBtn.textContent = \"Pause animation\";\n        pauseBtn.classList.add(\"is-active\");\n      }\n\n      function togglePause() {\n        manuallyPaused = !card.classList.contains(\"ols-paused\");\n        if (manuallyPaused) {\n          pause();\n        } else {\n          play();\n        }\n      }\n\n      pauseBtn.addEventListener(\"click\", togglePause);\n\n      const observer = new IntersectionObserver(function (entries) {\n        entries.forEach(function (entry) {\n          if (entry.intersectionRatio >= 0.5) {\n            if (!manuallyPaused) { play(); }\n          } else {\n            pause();\n          }\n        });\n      }, { threshold: [0, 0.25, 0.5, 0.75, 1.0] });\n\n      observer.observe(card);\n    })();\n  <\/script>\n<\/section>\n      <\/article>\n\n      <article class=\"ols-note-card orange\">\n        <div class=\"ols-note-title\"><div class=\"ols-note-icon\">4<\/div><h2>Stage 2: Acceleration<\/h2><\/div>\n        <p>The positive ions are accelerated by an <strong>electric field<\/strong>. The field pulls the positive ions towards a negatively charged plate or region.<\/p>\n        <p>This forms a narrow beam of ions travelling through the instrument. Ions with the same charge are given kinetic energy as they are accelerated into the flight path.<\/p>\n        <div class=\"ols-key-box\"><p><strong>Exam focus:<\/strong> Positive ions accelerate towards the negative plate because opposite charges attract.<\/p><\/div>\n        <!--\n===============================================================================\nCOPYRIGHT NOTICE\n\u00a9 Online Learning System. All rights reserved.\n\nThis HTML, CSS, JavaScript animation, educational sequencing, visual layout,\ncode structure and explanatory content are the intellectual property of\nOnline Learning System.\n\nUnauthorised copying, redistribution, resale, modification, republication,\nscraping, extraction, derivative reuse or removal of copyright notices is\nstrictly prohibited.\n\nBinary copyright marker:\n01000011 01101111 01110000 01111001 01110010 01101001 01100111 01101000 01110100 00100000 01001111 01101110 01101100 01101001 01101110 01100101 00100000 01001100 01100101 01100001 01110010 01101110 01101001 01101110 01100111 00100000 01010011 01111001 01110011 01110100 01100101 01101101\n\nHex copyright marker:\n43 6F 70 79 72 69 67 68 74 20 4F 6E 6C 69 6E 65 20 4C 65 61 72 6E 69 6E 67 20 53 79 73 74 65 6D\n===============================================================================\n-->\n\n<section id=\"ols-ms-acceleration-stage\" class=\"ols-ms-acceleration-stage is-playing\" data-owner=\"Online Learning System\" data-copyright=\"\u00a9 Online Learning System. All rights reserved.\" data-rights=\"Unauthorised copying, redistribution, resale, modification, republication, scraping, extraction, derivative reuse or removal of copyright notices is prohibited.\">\n  <style>\n    \/* \n      \u00a9 Online Learning System. All rights reserved.\n      This animation and code structure are protected intellectual property.\n    *\/\n\n    #ols-ms-acceleration-stage {\n      --ols-navy: #1C244B;\n      --ols-blue: #2563eb;\n      --ols-red: #c81e1e;\n      --ols-gold: #c9973a;\n      --ols-green: #0f9d58;\n      --ols-soft-blue: #eef4ff;\n      --ols-border: rgba(28, 36, 75, 0.14);\n      --ols-shadow: 0 14px 34px rgba(28, 36, 75, 0.12);\n      --ols-inner-shadow: 0 10px 26px rgba(28, 36, 75, 0.08);\n      width: 100%;\n      margin: 28px auto;\n      font-family: Poppins, Arial, sans-serif;\n      color: var(--ols-navy);\n    }\n\n    #ols-ms-acceleration-stage,\n    #ols-ms-acceleration-stage * {\n      box-sizing: border-box;\n    }\n\n    #ols-ms-acceleration-stage.ols-paused *,\n    #ols-ms-acceleration-stage.ols-paused *::before,\n    #ols-ms-acceleration-stage.ols-paused *::after {\n      animation-play-state: paused !important;\n    }\n\n    #ols-ms-acceleration-stage .ols-ms-card {\n      width: 100%;\n      background: linear-gradient(180deg, #ffffff 0%, #f8fbff 100%);\n      border: 1px solid var(--ols-border);\n      border-radius: 28px;\n      box-shadow: var(--ols-shadow);\n      overflow: hidden;\n    }\n\n    #ols-ms-acceleration-stage .ols-ms-header {\n      padding: 24px 26px 16px;\n      border-bottom: 1px solid rgba(28, 36, 75, 0.08);\n      background:\n        radial-gradient(circle at top left, rgba(201, 151, 58, 0.16), transparent 34%),\n        radial-gradient(circle at top right, rgba(37, 99, 235, 0.12), transparent 32%),\n        #ffffff;\n    }\n\n    #ols-ms-acceleration-stage .ols-ms-pill {\n      display: inline-flex;\n      align-items: center;\n      gap: 8px;\n      padding: 7px 12px;\n      border-radius: 999px;\n      background: rgba(37, 99, 235, 0.10);\n      color: var(--ols-blue);\n      border: 1px solid rgba(37, 99, 235, 0.18);\n      font-size: 13px;\n      font-weight: 700;\n      margin-bottom: 12px;\n    }\n\n    #ols-ms-acceleration-stage .ols-ms-title {\n      margin: 0;\n      font-size: clamp(26px, 3vw, 40px);\n      line-height: 1.12;\n      font-weight: 700;\n      color: var(--ols-navy);\n      letter-spacing: -0.03em;\n    }\n\n    #ols-ms-acceleration-stage .ols-ms-subtitle {\n      margin: 12px 0 0;\n      font-size: clamp(16px, 1.4vw, 22px);\n      line-height: 1.55;\n      font-weight: 300;\n      color: rgba(28, 36, 75, 0.82);\n      max-width: 980px;\n    }\n\n    #ols-ms-acceleration-stage .ols-stage-wrap {\n      position: relative;\n      width: 100%;\n      background:\n        radial-gradient(circle at 16% 50%, rgba(37, 99, 235, 0.08), transparent 24%),\n        radial-gradient(circle at 62% 45%, rgba(201, 151, 58, 0.10), transparent 24%),\n        linear-gradient(180deg, #ffffff 0%, #f7f9fc 100%);\n      border-bottom: 1px solid rgba(28, 36, 75, 0.08);\n      overflow: hidden;\n    }\n\n    #ols-ms-acceleration-stage .ols-stage {\n      position: relative;\n      width: 100%;\n      height: 560px;\n      overflow: hidden;\n    }\n\n    #ols-ms-acceleration-stage .ols-vacuum-label {\n      position: absolute;\n      top: 16px;\n      left: 18px;\n      z-index: 5;\n      display: inline-flex;\n      align-items: center;\n      padding: 8px 12px;\n      border-radius: 999px;\n      background: rgba(255, 255, 255, 0.90);\n      border: 1px solid rgba(28, 36, 75, 0.10);\n      box-shadow: 0 6px 18px rgba(28, 36, 75, 0.10);\n      font-size: 13px;\n      font-weight: 700;\n      color: var(--ols-navy);\n    }\n\n    #ols-ms-acceleration-stage .ols-hint {\n      position: absolute;\n      top: 16px;\n      right: 18px;\n      z-index: 5;\n      display: inline-flex;\n      align-items: center;\n      padding: 8px 12px;\n      border-radius: 999px;\n      background: rgba(255, 255, 255, 0.90);\n      border: 1px solid rgba(28, 36, 75, 0.10);\n      box-shadow: 0 6px 18px rgba(28, 36, 75, 0.10);\n      font-size: 13px;\n      font-weight: 700;\n      color: var(--ols-navy);\n    }\n\n    #ols-ms-acceleration-stage .ols-step-label {\n      position: absolute;\n      left: 50%;\n      top: 82px;\n      transform: translateX(-50%);\n      width: min(90%, 780px);\n      min-height: 68px;\n      text-align: center;\n      font-size: clamp(16px, 1.6vw, 22px);\n      line-height: 1.45;\n      font-weight: 700;\n      color: rgba(28, 36, 75, 0.88);\n      z-index: 5;\n    }\n\n    #ols-ms-acceleration-stage .ols-step-label span {\n      position: absolute;\n      left: 0;\n      right: 0;\n      display: block;\n      opacity: 0;\n    }\n\n    #ols-ms-acceleration-stage .ols-step-one {\n      animation: olsAccelStepOne 8s ease-in-out infinite;\n    }\n\n    #ols-ms-acceleration-stage .ols-step-two {\n      animation: olsAccelStepTwo 8s ease-in-out infinite;\n    }\n\n    #ols-ms-acceleration-stage .ols-tube {\n      position: absolute;\n      left: 6%;\n      right: 6%;\n      top: 50%;\n      height: 168px;\n      transform: translateY(-50%);\n      border-radius: 999px;\n      border: 4px solid rgba(28, 36, 75, 0.22);\n      background:\n        linear-gradient(180deg, rgba(255,255,255,0.95) 0%, rgba(243,247,255,0.98) 46%, rgba(232,238,250,0.94) 100%);\n      box-shadow:\n        inset 0 18px 26px rgba(255,255,255,0.85),\n        inset 0 -18px 22px rgba(28,36,75,0.05),\n        0 16px 34px rgba(28,36,75,0.08);\n      overflow: hidden;\n    }\n\n    #ols-ms-acceleration-stage .ols-tube::before {\n      content: \"\";\n      position: absolute;\n      left: 0;\n      right: 0;\n      top: 18px;\n      height: 18px;\n      border-radius: 999px;\n      background: rgba(255,255,255,0.65);\n      filter: blur(2px);\n    }\n\n    #ols-ms-acceleration-stage .ols-tube::after {\n      content: \"\";\n      position: absolute;\n      left: 0;\n      right: 0;\n      bottom: 18px;\n      height: 16px;\n      border-radius: 999px;\n      background: rgba(28,36,75,0.04);\n      filter: blur(2px);\n    }\n\n    #ols-ms-acceleration-stage .ols-disc {\n      position: absolute;\n      left: 46.5%;\n      top: 50%;\n      width: 34px;\n      height: 152px;\n      transform: translate(-50%, -50%) perspective(260px) rotateY(-18deg);\n      border-radius: 50%;\n      background:\n        linear-gradient(90deg, #737b8a 0%, #c8d0dc 42%, #f4f7fb 50%, #9da8ba 72%, #626b7b 100%);\n      box-shadow:\n        0 10px 24px rgba(28,36,75,0.22),\n        inset 4px 0 8px rgba(255,255,255,0.65),\n        inset -5px 0 10px rgba(28,36,75,0.18);\n      z-index: 7;\n    }\n\n    #ols-ms-acceleration-stage .ols-disc::before {\n      content: \"\";\n      position: absolute;\n      left: 50%;\n      top: 50%;\n      width: 48px;\n      height: 48px;\n      transform: translate(-50%, -50%);\n      border-radius: 50%;\n      background:\n        radial-gradient(circle, rgba(28,36,75,0.92) 0%, rgba(28,36,75,0.92) 42%, rgba(255,255,255,0.92) 45%, rgba(255,255,255,0.92) 50%, rgba(28,36,75,0.18) 54%, rgba(28,36,75,0) 62%);\n      box-shadow:\n        inset 0 0 10px rgba(0,0,0,0.45),\n        0 0 0 2px rgba(255,255,255,0.35);\n    }\n\n    #ols-ms-acceleration-stage .ols-disc::after {\n      content: \"\";\n      position: absolute;\n      left: 50%;\n      top: 50%;\n      width: 28px;\n      height: 28px;\n      transform: translate(-50%, -50%);\n      border-radius: 50%;\n      background: #f4f7fb;\n      box-shadow:\n        inset 0 3px 8px rgba(28,36,75,0.20),\n        0 0 0 2px rgba(28,36,75,0.12);\n    }\n\n    #ols-ms-acceleration-stage .ols-disc-label {\n      position: absolute;\n      left: calc(46.5% - 90px);\n      top: calc(50% - 126px);\n      width: 180px;\n      text-align: center;\n      font-size: 14px;\n      line-height: 1.35;\n      font-weight: 700;\n      color: var(--ols-red);\n      z-index: 8;\n    }\n\n    #ols-ms-acceleration-stage .ols-disc-label .charge {\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      width: 22px;\n      height: 22px;\n      margin-left: 4px;\n      border-radius: 50%;\n      background: rgba(200,30,30,0.12);\n      color: var(--ols-red);\n      font-weight: 800;\n      border: 1px solid rgba(200,30,30,0.18);\n    }\n\n    #ols-ms-acceleration-stage .ols-field-arrow {\n      position: absolute;\n      top: 50%;\n      height: 4px;\n      border-radius: 999px;\n      background: linear-gradient(90deg, rgba(37,99,235,0.15), rgba(37,99,235,0.85));\n      z-index: 2;\n      opacity: 0;\n    }\n\n    #ols-ms-acceleration-stage .ols-field-arrow::after {\n      content: \"\";\n      position: absolute;\n      right: -1px;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 0;\n      height: 0;\n      border-top: 8px solid transparent;\n      border-bottom: 8px solid transparent;\n      border-left: 14px solid rgba(37,99,235,0.85);\n    }\n\n    #ols-ms-acceleration-stage .ols-field-arrow.one {\n      left: 20%;\n      width: 130px;\n      animation: olsFieldArrowPulse 8s ease-in-out infinite;\n    }\n\n    #ols-ms-acceleration-stage .ols-field-arrow.two {\n      left: 29%;\n      width: 104px;\n      animation: olsFieldArrowPulse 8s ease-in-out infinite 0.18s;\n    }\n\n    #ols-ms-acceleration-stage .ols-field-arrow.three {\n      left: 37%;\n      width: 78px;\n      animation: olsFieldArrowPulse 8s ease-in-out infinite 0.36s;\n    }\n\n    #ols-ms-acceleration-stage .ols-velocity-lines {\n      position: absolute;\n      left: 54%;\n      top: 50%;\n      width: 32%;\n      height: 100px;\n      transform: translateY(-50%);\n      z-index: 2;\n      opacity: 0;\n      animation: olsVelocityArea 8s ease-in-out infinite;\n    }\n\n    #ols-ms-acceleration-stage .ols-velocity-lines span {\n      position: absolute;\n      right: 0;\n      left: 0;\n      height: 4px;\n      border-radius: 999px;\n      background: linear-gradient(90deg, rgba(201,151,58,0), rgba(201,151,58,0.85));\n      animation: olsVelocitySweep 0.58s linear infinite;\n    }\n\n    #ols-ms-acceleration-stage .ols-velocity-lines span:nth-child(1) { top: 6px; }\n    #ols-ms-acceleration-stage .ols-velocity-lines span:nth-child(2) { top: 26px; animation-delay: 0.08s; }\n    #ols-ms-acceleration-stage .ols-velocity-lines span:nth-child(3) { top: 46px; animation-delay: 0.16s; }\n    #ols-ms-acceleration-stage .ols-velocity-lines span:nth-child(4) { top: 66px; animation-delay: 0.24s; }\n    #ols-ms-acceleration-stage .ols-velocity-lines span:nth-child(5) { top: 86px; animation-delay: 0.32s; }\n\n    #ols-ms-acceleration-stage .ols-ion {\n      position: absolute;\n      left: 16%;\n      top: 50%;\n      width: 34px;\n      height: 34px;\n      transform: translate(-50%, -50%);\n      border-radius: 50%;\n      background:\n        radial-gradient(circle at 35% 30%, #ffffff, #9cc3ff 22%, #2563eb 60%, #1C244B 92%);\n      box-shadow:\n        0 0 0 5px rgba(37,99,235,0.12),\n        0 0 20px rgba(37,99,235,0.36);\n      z-index: 6;\n      animation: olsAccelerationIon 8s linear infinite;\n    }\n\n    #ols-ms-acceleration-stage .ols-ion::before {\n      content: \"+\";\n      position: absolute;\n      inset: 0;\n      display: grid;\n      place-items: center;\n      color: #ffffff;\n      font-size: 22px;\n      font-weight: 800;\n    }\n\n    #ols-ms-acceleration-stage .ols-ion-trail {\n      position: absolute;\n      left: 16%;\n      top: calc(50% - 2px);\n      width: 0;\n      height: 4px;\n      border-radius: 999px;\n      background: linear-gradient(90deg, rgba(37,99,235,0), rgba(37,99,235,0.82));\n      z-index: 5;\n      opacity: 0;\n      animation: olsAccelerationTrail 8s linear infinite;\n    }\n\n    #ols-ms-acceleration-stage .ols-speed-label {\n      position: absolute;\n      left: 62%;\n      top: calc(50% - 118px);\n      padding: 8px 12px;\n      border-radius: 999px;\n      background: rgba(255,255,255,0.92);\n      border: 1px solid rgba(201,151,58,0.20);\n      box-shadow: 0 8px 20px rgba(28,36,75,0.10);\n      font-size: 14px;\n      line-height: 1.35;\n      font-weight: 800;\n      color: var(--ols-gold);\n      opacity: 0;\n      z-index: 6;\n      animation: olsSpeedLabel 8s ease-in-out infinite;\n    }\n\n    #ols-ms-acceleration-stage .ols-flight-label {\n      position: absolute;\n      left: 66%;\n      top: calc(50% + 92px);\n      transform: translateX(-50%);\n      width: 220px;\n      text-align: center;\n      font-size: 14px;\n      line-height: 1.35;\n      font-weight: 700;\n      color: var(--ols-navy);\n      z-index: 4;\n    }\n\n    #ols-ms-acceleration-stage .ols-equation {\n      position: absolute;\n      left: 50%;\n      bottom: 26px;\n      transform: translateX(-50%);\n      width: min(88%, 760px);\n      padding: 10px 14px;\n      border-radius: 14px;\n      background: rgba(255, 255, 255, 0.94);\n      border: 1px solid rgba(28, 36, 75, 0.12);\n      box-shadow: 0 12px 28px rgba(28, 36, 75, 0.10);\n      text-align: center;\n      font-size: clamp(12px, 1.3vw, 17px);\n      line-height: 1.35;\n      font-weight: 800;\n      color: var(--ols-navy);\n      opacity: 0;\n      animation: olsEquationAppear 8s ease-in-out infinite;\n      z-index: 6;\n    }\n\n    #ols-ms-acceleration-stage .ols-equation span {\n      color: var(--ols-blue);\n    }\n\n    #ols-ms-acceleration-stage .ols-controls {\n      display: flex;\n      flex-wrap: wrap;\n      gap: 10px;\n      padding: 16px 18px;\n      background: #ffffff;\n      border-bottom: 1px solid rgba(28, 36, 75, 0.08);\n    }\n\n    #ols-ms-acceleration-stage .ols-btn {\n      appearance: none;\n      border: 1px solid rgba(28, 36, 75, 0.14);\n      background: #ffffff;\n      color: var(--ols-navy);\n      border-radius: 999px;\n      padding: 10px 15px;\n      font-family: Poppins, Arial, sans-serif;\n      font-size: 14px;\n      font-weight: 700;\n      cursor: pointer;\n      transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease, color 0.2s ease;\n    }\n\n    #ols-ms-acceleration-stage .ols-btn:hover {\n      transform: translateY(-2px);\n      box-shadow: 0 8px 20px rgba(28, 36, 75, 0.12);\n    }\n\n    #ols-ms-acceleration-stage .ols-btn.is-active {\n      background: var(--ols-navy);\n      color: #ffffff;\n      border-color: var(--ols-navy);\n    }\n\n    #ols-ms-acceleration-stage .ols-explanation {\n      padding: 22px 26px 26px;\n      background: #ffffff;\n    }\n\n    #ols-ms-acceleration-stage .ols-key-message {\n      margin: 0;\n      padding: 16px 18px;\n      border-radius: 18px;\n      background: var(--ols-soft-blue);\n      border: 1px solid rgba(37, 99, 235, 0.14);\n      font-size: 16px;\n      line-height: 1.65;\n      font-weight: 300;\n      color: rgba(28, 36, 75, 0.88);\n    }\n\n    #ols-ms-acceleration-stage .ols-key-message strong {\n      font-weight: 800;\n      color: var(--ols-navy);\n    }\n\n    #ols-ms-acceleration-stage .ols-explanation-grid {\n      display: grid;\n      grid-template-columns: repeat(3, minmax(0, 1fr));\n      gap: 14px;\n      margin-top: 16px;\n    }\n\n    #ols-ms-acceleration-stage .ols-info-box {\n      border-radius: 18px;\n      padding: 16px;\n      background: #f8fbff;\n      border: 1px solid rgba(28, 36, 75, 0.10);\n      box-shadow: var(--ols-inner-shadow);\n    }\n\n    #ols-ms-acceleration-stage .ols-info-box strong {\n      display: block;\n      font-size: 15px;\n      margin-bottom: 6px;\n      color: var(--ols-navy);\n    }\n\n    #ols-ms-acceleration-stage .ols-info-box span {\n      display: block;\n      font-size: 14px;\n      line-height: 1.55;\n      font-weight: 300;\n      color: rgba(28, 36, 75, 0.80);\n    }\n\n    #ols-ms-acceleration-stage .ols-copyright-footer {\n      padding: 16px 22px 20px;\n      background: #ffffff;\n      border-top: 1px solid rgba(28, 36, 75, 0.08);\n      text-align: center;\n      font-size: 13px;\n      line-height: 1.55;\n      font-weight: 500;\n      color: rgba(28, 36, 75, 0.70);\n    }\n\n    #ols-ms-acceleration-stage .ols-copyright-footer strong {\n      color: var(--ols-navy);\n      font-weight: 800;\n    }\n\n    @keyframes olsAccelStepOne {\n      0%, 8% {\n        opacity: 0;\n        transform: translateY(8px);\n      }\n      14%, 42% {\n        opacity: 1;\n        transform: translateY(0);\n      }\n      48%, 100% {\n        opacity: 0;\n        transform: translateY(-8px);\n      }\n    }\n\n    @keyframes olsAccelStepTwo {\n      0%, 48% {\n        opacity: 0;\n        transform: translateY(8px);\n      }\n      56%, 100% {\n        opacity: 1;\n        transform: translateY(0);\n      }\n    }\n\n    @keyframes olsFieldArrowPulse {\n      0%, 14% {\n        opacity: 0;\n        transform: translateY(-50%) scaleX(0.72);\n      }\n      20%, 45% {\n        opacity: 1;\n        transform: translateY(-50%) scaleX(1);\n      }\n      52%, 100% {\n        opacity: 0;\n        transform: translateY(-50%) scaleX(1.06);\n      }\n    }\n\n    @keyframes olsAccelerationIon {\n      0%, 10% {\n        left: 16%;\n        opacity: 0;\n        transform: translate(-50%, -50%) scale(0.85);\n      }\n      14% {\n        left: 16%;\n        opacity: 1;\n        transform: translate(-50%, -50%) scale(1);\n      }\n      42% {\n        left: 43.8%;\n        opacity: 1;\n        transform: translate(-50%, -50%) scale(1);\n      }\n      48% {\n        left: 46.5%;\n        opacity: 1;\n        transform: translate(-50%, -50%) scale(0.92);\n      }\n      52% {\n        left: 49.5%;\n        opacity: 1;\n        transform: translate(-50%, -50%) scale(1.02);\n      }\n      61% {\n        left: 70%;\n        opacity: 1;\n        transform: translate(-50%, -50%) scale(1.02);\n      }\n      72% {\n        left: 91%;\n        opacity: 1;\n        transform: translate(-50%, -50%) scale(1.02);\n      }\n      100% {\n        left: 104%;\n        opacity: 0;\n        transform: translate(-50%, -50%) scale(1.02);\n      }\n    }\n\n    @keyframes olsAccelerationTrail {\n      0%, 12% {\n        opacity: 0;\n        width: 0;\n      }\n      18% {\n        opacity: 0.8;\n        width: 56px;\n      }\n      42% {\n        opacity: 0.8;\n        width: 250px;\n      }\n      48% {\n        opacity: 0.92;\n        width: 275px;\n      }\n      52% {\n        opacity: 1;\n        width: 335px;\n      }\n      61% {\n        opacity: 1;\n        width: 520px;\n      }\n      72% {\n        opacity: 1;\n        width: 720px;\n      }\n      100% {\n        opacity: 0;\n        width: 830px;\n      }\n    }\n\n    @keyframes olsVelocityArea {\n      0%, 48% {\n        opacity: 0;\n      }\n      54%, 100% {\n        opacity: 1;\n      }\n    }\n\n    @keyframes olsVelocitySweep {\n      0% {\n        transform: translateX(-42px);\n        opacity: 0.1;\n      }\n      25% {\n        opacity: 0.7;\n      }\n      100% {\n        transform: translateX(120px);\n        opacity: 0.95;\n      }\n    }\n\n    @keyframes olsSpeedLabel {\n      0%, 50% {\n        opacity: 0;\n        transform: translateY(8px);\n      }\n      58%, 100% {\n        opacity: 1;\n        transform: translateY(0);\n      }\n    }\n\n    @keyframes olsEquationAppear {\n      0%, 58% {\n        opacity: 0;\n        transform: translateX(-50%) translateY(12px);\n      }\n      66%, 100% {\n        opacity: 1;\n        transform: translateX(-50%) translateY(0);\n      }\n    }\n\n    @media (max-width: 880px) {\n      #ols-ms-acceleration-stage .ols-stage {\n        height: 500px;\n      }\n\n      #ols-ms-acceleration-stage .ols-explanation-grid {\n        grid-template-columns: 1fr;\n      }\n\n      #ols-ms-acceleration-stage .ols-hint {\n        display: none;\n      }\n\n      #ols-ms-acceleration-stage .ols-disc-label {\n        top: calc(50% - 116px);\n      }\n\n      #ols-ms-acceleration-stage .ols-speed-label {\n        left: 58%;\n      }\n    }\n\n    @media (max-width: 560px) {\n      #ols-ms-acceleration-stage .ols-ms-header,\n      #ols-ms-acceleration-stage .ols-explanation {\n        padding-left: 18px;\n        padding-right: 18px;\n      }\n\n      #ols-ms-acceleration-stage .ols-stage {\n        height: 460px;\n      }\n\n      #ols-ms-acceleration-stage .ols-step-label {\n        top: 70px;\n        font-size: 15px;\n      }\n\n      #ols-ms-acceleration-stage .ols-disc {\n        width: 30px;\n        height: 126px;\n      }\n\n      #ols-ms-acceleration-stage .ols-disc::before {\n        width: 42px;\n        height: 42px;\n      }\n\n      #ols-ms-acceleration-stage .ols-disc::after {\n        width: 25px;\n        height: 25px;\n      }\n\n      #ols-ms-acceleration-stage .ols-disc-label,\n      #ols-ms-acceleration-stage .ols-speed-label,\n      #ols-ms-acceleration-stage .ols-flight-label {\n        font-size: 12px;\n      }\n\n      #ols-ms-acceleration-stage .ols-equation {\n        bottom: 18px;\n        padding: 14px;\n      }\n\n      #ols-ms-acceleration-stage .ols-controls {\n        padding: 14px;\n      }\n\n      #ols-ms-acceleration-stage .ols-btn {\n        width: 100%;\n      }\n    }\n  <\/style>\n\n  <div class=\"ols-ms-card\">\n    <div class=\"ols-ms-header\">\n      <div class=\"ols-ms-pill\">Mass spectrometer animation<\/div>\n      <h2 class=\"ols-ms-title\">Acceleration of the positive ion<\/h2>\n      <p class=\"ols-ms-subtitle\">\n        This animation shows the positive hydrogen ion being attracted towards a negatively charged disc with a small hole. The ion is accelerated through the hole and then travels quickly along the flight tube.\n      <\/p>\n    <\/div>\n\n    <div class=\"ols-stage-wrap\">\n      <div class=\"ols-stage\">\n        <div class=\"ols-vacuum-label\">Acceleration chamber and flight tube<\/div>\n        <div class=\"ols-hint\">Pause or play using the control below<\/div>\n\n        <div class=\"ols-step-label\">\n          <span class=\"ols-step-one\">1. The positive H\u207a ion is attracted towards the negatively charged disc.<\/span>\n          <span class=\"ols-step-two\">2. The ion passes through the hole and accelerates rapidly into the flight tube.<\/span>\n        <\/div>\n\n        <div class=\"ols-tube\"><\/div>\n\n        <div class=\"ols-field-arrow one\"><\/div>\n        <div class=\"ols-field-arrow two\"><\/div>\n        <div class=\"ols-field-arrow three\"><\/div>\n\n        <div class=\"ols-disc\" aria-label=\"negatively charged accelerating disc with hollow centre hole\"><\/div>\n        <div class=\"ols-disc-label\">negatively charged disc <span class=\"charge\">\u2212<\/span><\/div>\n\n        <div class=\"ols-ion\" aria-label=\"moving positive ion\"><\/div>\n        <div class=\"ols-ion-trail\"><\/div>\n\n        <div class=\"ols-velocity-lines\" aria-hidden=\"true\">\n          <span><\/span>\n          <span><\/span>\n          <span><\/span>\n          <span><\/span>\n          <span><\/span>\n        <\/div>\n\n        <div class=\"ols-speed-label\">ion speed increases<\/div>\n        <div class=\"ols-flight-label\">flight tube<\/div>\n\n        <div class=\"ols-equation\">\n          positive ion <span>accelerated by electric attraction<\/span> \u2192 enters flight tube at high speed\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"ols-controls\">\n      <button type=\"button\" class=\"ols-btn is-active\" id=\"olsMsAccelPauseBtn\">Pause animation<\/button>\n    <\/div>\n\n    <div class=\"ols-explanation\">\n      <p class=\"ols-key-message\">\n        <strong>Key idea:<\/strong> the ion formed in the ionisation chamber is <strong>positive<\/strong>, so it is attracted towards a <strong>negative plate<\/strong>. As it moves through the electric field and passes through the small hole, it is <strong>accelerated<\/strong> and enters the flight tube with high kinetic energy.\n      <\/p>\n\n      <div class=\"ols-explanation-grid\">\n        <div class=\"ols-info-box\">\n          <strong>Positive ion<\/strong>\n          <span>The hydrogen ion is H\u207a, so it is attracted to a negatively charged plate.<\/span>\n        <\/div>\n\n        <div class=\"ols-info-box\">\n          <strong>Accelerating disc<\/strong>\n          <span>The disc has a small hole. The ion is pulled towards it and passes through the hole as it speeds up.<\/span>\n        <\/div>\n\n        <div class=\"ols-info-box\">\n          <strong>Flight tube<\/strong>\n          <span>After acceleration, the ion travels very quickly through the hollow tube towards the next stage of the mass spectrometer.<\/span>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"ols-copyright-footer\">\n      <strong>\u00a9 Online Learning System.<\/strong> This educational animation, code structure, visual design and explanatory content are protected. Unauthorised copying, redistribution, resale, modification or republication is prohibited.\n    <\/div>\n  <\/div>\n\n  <script>\n    \/*\n      ===============================================================================\n      COPYRIGHT NOTICE\n      \u00a9 Online Learning System. All rights reserved.\n\n      This HTML, CSS, JavaScript animation, educational sequencing, visual layout,\n      code structure and explanatory content are the intellectual property of\n      Online Learning System.\n\n      Binary copyright marker:\n      01000011 01101111 01110000 01111001 01110010 01101001 01100111 01101000 01110100 00100000 01001111 01101110 01101100 01101001 01101110 01100101 00100000 01001100 01100101 01100001 01110010 01101110 01101001 01101110 01100111 00100000 01010011 01111001 01110011 01110100 01100101 01101101\n\n      Hex copyright marker:\n      43 6F 70 79 72 69 67 68 74 20 4F 6E 6C 69 6E 65 20 4C 65 61 72 6E 69 6E 67 20 53 79 73 74 65 6D\n      ===============================================================================\n    *\/\n\n    (function () {\n      const card = document.getElementById(\"ols-ms-acceleration-stage\");\n      const pauseBtn = document.getElementById(\"olsMsAccelPauseBtn\");\n\n      if (!card || !pauseBtn) {\n        return;\n      }\n\n      let manuallyPaused = false;\n\n      function pause() {\n        card.classList.add(\"ols-paused\");\n        pauseBtn.textContent = \"Play animation\";\n        pauseBtn.classList.remove(\"is-active\");\n      }\n\n      function play() {\n        card.classList.remove(\"ols-paused\");\n        pauseBtn.textContent = \"Pause animation\";\n        pauseBtn.classList.add(\"is-active\");\n      }\n\n      function togglePause() {\n        manuallyPaused = !card.classList.contains(\"ols-paused\");\n        if (manuallyPaused) {\n          pause();\n        } else {\n          play();\n        }\n      }\n\n      pauseBtn.addEventListener(\"click\", togglePause);\n\n      const observer = new IntersectionObserver(function (entries) {\n        entries.forEach(function (entry) {\n          if (entry.intersectionRatio >= 0.5) {\n            if (!manuallyPaused) { play(); }\n          } else {\n            pause();\n          }\n        });\n      }, { threshold: [0, 0.25, 0.5, 0.75, 1.0] });\n\n      observer.observe(card);\n    })();\n  <\/script>\n<\/section>\n      <\/article>\n\n      <article class=\"ols-note-card\">\n        <div class=\"ols-note-title\"><div class=\"ols-note-icon\">5<\/div><h2>Stage 3: Deflection<\/h2><\/div>\n        <p>The beam of positive ions passes through a <strong>magnetic field<\/strong>. The magnetic field deflects the ions so that their path bends.<\/p>\n        <p>The amount of deflection depends on the <strong>mass-to-charge ratio<\/strong>, m\/z. Ions with a smaller m\/z are deflected more. Ions with a larger m\/z are deflected less.<\/p>\n        <p>If the ions all have a charge of 1+, then lighter ions have a smaller m\/z and are deflected more than heavier ions. If the charge is different, m\/z must be considered directly rather than mass alone.<\/p>\n        <div class=\"ols-table-wrap\">\n          <table class=\"ols-table\">\n            <thead><tr><th>Ion property<\/th><th>Effect on m\/z<\/th><th>Effect on deflection<\/th><\/tr><\/thead>\n            <tbody>\n              <tr><td data-label=\"Ion property\">Lower mass with the same charge<\/td><td data-label=\"Effect on m\/z\">Smaller m\/z<\/td><td data-label=\"Effect on deflection\">More deflection<\/td><\/tr>\n              <tr><td data-label=\"Ion property\">Higher mass with the same charge<\/td><td data-label=\"Effect on m\/z\">Larger m\/z<\/td><td data-label=\"Effect on deflection\">Less deflection<\/td><\/tr>\n              <tr><td data-label=\"Ion property\">Higher positive charge with the same mass<\/td><td data-label=\"Effect on m\/z\">Smaller m\/z<\/td><td data-label=\"Effect on deflection\">More deflection<\/td><\/tr>\n            <\/tbody>\n          <\/table>\n        <\/div>\n        <div class=\"ols-key-box\"><p><strong>Example:<\/strong> An ion with mass 28 and charge 1+ has m\/z = 28. An ion with mass 56 and charge 2+ also has m\/z = 28, so both can be detected under the same magnetic field setting.<\/p><\/div>\n        <!--\n===============================================================================\nCOPYRIGHT NOTICE\n\u00a9 Online Learning System. All rights reserved.\n\nThis HTML, CSS, JavaScript animation, educational sequencing, visual layout,\ncode structure and explanatory content are the intellectual property of\nOnline Learning System.\n\nUnauthorised copying, redistribution, resale, modification, republication,\nscraping, extraction, derivative reuse or removal of copyright notices is\nstrictly prohibited.\n\nBinary copyright marker:\n01000011 01101111 01110000 01111001 01110010 01101001 01100111 01101000 01110100 00100000 01001111 01101110 01101100 01101001 01101110 01100101 00100000 01001100 01100101 01100001 01110010 01101110 01101001 01101110 01100111 00100000 01010011 01111001 01110011 01110100 01100101 01101101\n\nHex copyright marker:\n43 6F 70 79 72 69 67 68 74 20 4F 6E 6C 69 6E 65 20 4C 65 61 72 6E 69 6E 67 20 53 79 73 74 65 6D\n===============================================================================\n-->\n\n<section id=\"ols-ms-deflection-stage\" class=\"ols-ms-deflection-stage is-playing\" data-owner=\"Online Learning System\" data-copyright=\"\u00a9 Online Learning System. All rights reserved.\" data-rights=\"Unauthorised copying, redistribution, resale, modification, republication, scraping, extraction, derivative reuse or removal of copyright notices is prohibited.\">\n  <style>\n    \/*\n      \u00a9 Online Learning System. All rights reserved.\n      This animation and code structure are protected intellectual property.\n    *\/\n\n    #ols-ms-deflection-stage {\n      --ols-navy: #1C244B;\n      --ols-blue: #2563eb;\n      --ols-red: #c81e1e;\n      --ols-gold: #c9973a;\n      --ols-green: #0f9d58;\n      --ols-soft-blue: #eef4ff;\n      --ols-border: rgba(28, 36, 75, 0.14);\n      --ols-shadow: 0 14px 34px rgba(28, 36, 75, 0.12);\n      --ols-inner-shadow: 0 10px 26px rgba(28, 36, 75, 0.08);\n      width: 100%;\n      margin: 28px auto;\n      font-family: Poppins, Arial, sans-serif;\n      color: var(--ols-navy);\n    }\n\n    #ols-ms-deflection-stage,\n    #ols-ms-deflection-stage * {\n      box-sizing: border-box;\n    }\n\n    #ols-ms-deflection-stage.ols-paused *,\n    #ols-ms-deflection-stage.ols-paused *::before,\n    #ols-ms-deflection-stage.ols-paused *::after {\n      animation-play-state: paused !important;\n    }\n\n    #ols-ms-deflection-stage .ols-ms-card {\n      width: 100%;\n      background: linear-gradient(180deg, #ffffff 0%, #f8fbff 100%);\n      border: 1px solid var(--ols-border);\n      border-radius: 28px;\n      box-shadow: var(--ols-shadow);\n      overflow: hidden;\n    }\n\n    #ols-ms-deflection-stage .ols-ms-header {\n      padding: 24px 26px 16px;\n      border-bottom: 1px solid rgba(28, 36, 75, 0.08);\n      background:\n        radial-gradient(circle at top left, rgba(201, 151, 58, 0.16), transparent 34%),\n        radial-gradient(circle at top right, rgba(37, 99, 235, 0.12), transparent 32%),\n        #ffffff;\n    }\n\n    #ols-ms-deflection-stage .ols-ms-pill {\n      display: inline-flex;\n      align-items: center;\n      gap: 8px;\n      padding: 7px 12px;\n      border-radius: 999px;\n      background: rgba(37, 99, 235, 0.10);\n      color: var(--ols-blue);\n      border: 1px solid rgba(37, 99, 235, 0.18);\n      font-size: 13px;\n      font-weight: 700;\n      margin-bottom: 12px;\n    }\n\n    #ols-ms-deflection-stage .ols-ms-title {\n      margin: 0;\n      font-size: clamp(26px, 3vw, 40px);\n      line-height: 1.12;\n      font-weight: 700;\n      color: var(--ols-navy);\n      letter-spacing: -0.03em;\n    }\n\n    #ols-ms-deflection-stage .ols-ms-subtitle {\n      margin: 12px 0 0;\n      font-size: clamp(16px, 1.4vw, 22px);\n      line-height: 1.55;\n      font-weight: 300;\n      color: rgba(28, 36, 75, 0.82);\n      max-width: 980px;\n    }\n\n    #ols-ms-deflection-stage .ols-stage-wrap {\n      position: relative;\n      width: 100%;\n      background:\n        radial-gradient(circle at 22% 50%, rgba(37, 99, 235, 0.08), transparent 24%),\n        radial-gradient(circle at 62% 44%, rgba(15, 157, 88, 0.10), transparent 26%),\n        linear-gradient(180deg, #ffffff 0%, #f7f9fc 100%);\n      border-bottom: 1px solid rgba(28, 36, 75, 0.08);\n      overflow: hidden;\n    }\n\n    #ols-ms-deflection-stage .ols-stage {\n      position: relative;\n      width: 100%;\n      height: 600px;\n      overflow: hidden;\n    }\n\n    #ols-ms-deflection-stage .ols-vacuum-label {\n      position: absolute;\n      top: 16px;\n      left: 18px;\n      z-index: 8;\n      display: inline-flex;\n      align-items: center;\n      padding: 8px 12px;\n      border-radius: 999px;\n      background: rgba(255, 255, 255, 0.90);\n      border: 1px solid rgba(28, 36, 75, 0.10);\n      box-shadow: 0 6px 18px rgba(28, 36, 75, 0.10);\n      font-size: 13px;\n      font-weight: 700;\n      color: var(--ols-navy);\n    }\n\n    #ols-ms-deflection-stage .ols-hint {\n      position: absolute;\n      top: 16px;\n      right: 18px;\n      z-index: 8;\n      display: inline-flex;\n      align-items: center;\n      padding: 8px 12px;\n      border-radius: 999px;\n      background: rgba(255, 255, 255, 0.90);\n      border: 1px solid rgba(28, 36, 75, 0.10);\n      box-shadow: 0 6px 18px rgba(28, 36, 75, 0.10);\n      font-size: 13px;\n      font-weight: 700;\n      color: var(--ols-navy);\n    }\n\n    #ols-ms-deflection-stage .ols-step-label {\n      position: absolute;\n      left: 50%;\n      top: 72px;\n      transform: translateX(-50%);\n      width: min(90%, 820px);\n      min-height: 78px;\n      text-align: center;\n      font-size: clamp(16px, 1.6vw, 22px);\n      line-height: 1.45;\n      font-weight: 700;\n      color: rgba(28, 36, 75, 0.88);\n      z-index: 8;\n    }\n\n    #ols-ms-deflection-stage .ols-step-label span {\n      position: absolute;\n      left: 0;\n      right: 0;\n      display: block;\n      opacity: 0;\n    }\n\n    #ols-ms-deflection-stage .ols-step-one {\n      animation: olsDeflectStepOne 8s ease-in-out infinite;\n    }\n\n    #ols-ms-deflection-stage .ols-step-two {\n      animation: olsDeflectStepTwo 8s ease-in-out infinite;\n    }\n\n    #ols-ms-deflection-stage .ols-path-guide {\n      position: absolute;\n      left: 4%;\n      top: 125px;\n      width: 92%;\n      height: 360px;\n      z-index: 3;\n      pointer-events: none;\n    }\n\n    #ols-ms-deflection-stage .ols-path-guide svg {\n      width: 100%;\n      height: 100%;\n      overflow: visible;\n      display: block;\n    }\n\n    #ols-ms-deflection-stage .ols-path-shared {\n      fill: none;\n      stroke: rgba(201, 151, 58, 0.54);\n      stroke-width: 5;\n      stroke-dasharray: 12 10;\n      stroke-linecap: round;\n      opacity: 0;\n      animation: olsPathShow 8s ease-in-out infinite;\n    }\n\n    #ols-ms-deflection-stage .ols-path-small {\n      fill: none;\n      stroke: rgba(37, 99, 235, 0.56);\n      stroke-width: 5;\n      stroke-dasharray: 12 10;\n      stroke-linecap: round;\n      opacity: 0;\n      animation: olsPathShow 8s ease-in-out infinite;\n    }\n\n    #ols-ms-deflection-stage .ols-path-large {\n      fill: none;\n      stroke: rgba(15, 157, 88, 0.58);\n      stroke-width: 5;\n      stroke-dasharray: 12 10;\n      stroke-linecap: round;\n      opacity: 0;\n      animation: olsPathShow 8s ease-in-out infinite;\n    }\n\n    #ols-ms-deflection-stage .ols-magnet-region {\n      position: absolute;\n      left: 52%;\n      top: 50%;\n      width: 270px;\n      height: 210px;\n      transform: translate(-50%, -50%);\n      z-index: 5;\n      pointer-events: none;\n    }\n\n    #ols-ms-deflection-stage .ols-magnet-plate {\n      position: absolute;\n      left: 50%;\n      width: 200px;\n      height: 52px;\n      transform: translateX(-50%);\n      border-radius: 16px;\n      box-shadow:\n        0 12px 26px rgba(28, 36, 75, 0.18),\n        inset 0 4px 10px rgba(255, 255, 255, 0.55);\n      border: 1px solid rgba(28, 36, 75, 0.14);\n    }\n\n    #ols-ms-deflection-stage .ols-magnet-plate.top {\n      top: 0;\n      background: linear-gradient(135deg, #dff3ff, #91c7ff 42%, #2563eb 100%);\n    }\n\n    #ols-ms-deflection-stage .ols-magnet-plate.bottom {\n      bottom: 0;\n      background: linear-gradient(135deg, #ffd9d9, #ff8a8a 42%, #c81e1e 100%);\n    }\n\n    #ols-ms-deflection-stage .ols-magnet-plate span {\n      position: absolute;\n      inset: 0;\n      display: grid;\n      place-items: center;\n      font-size: 17px;\n      line-height: 1;\n      font-weight: 800;\n      color: #ffffff;\n      text-shadow: 0 2px 4px rgba(0, 0, 0, 0.18);\n    }\n\n    #ols-ms-deflection-stage .ols-field-lines {\n      position: absolute;\n      left: 50%;\n      top: 50%;\n      width: 180px;\n      height: 102px;\n      transform: translate(-50%, -50%);\n      z-index: 4;\n      opacity: 0;\n      animation: olsFieldRegionShow 8s ease-in-out infinite;\n    }\n\n    #ols-ms-deflection-stage .ols-field-lines span {\n      position: absolute;\n      top: 0;\n      bottom: 0;\n      width: 3px;\n      border-radius: 999px;\n      background: linear-gradient(180deg, rgba(37, 99, 235, 0.92), rgba(200, 30, 30, 0.92));\n      opacity: 0.72;\n    }\n\n    #ols-ms-deflection-stage .ols-field-lines span::after {\n      content: \"\";\n      position: absolute;\n      left: 50%;\n      bottom: -2px;\n      transform: translateX(-50%);\n      width: 0;\n      height: 0;\n      border-left: 7px solid transparent;\n      border-right: 7px solid transparent;\n      border-top: 10px solid rgba(200, 30, 30, 0.88);\n    }\n\n    #ols-ms-deflection-stage .ols-field-lines span:nth-child(1) { left: 8%; }\n    #ols-ms-deflection-stage .ols-field-lines span:nth-child(2) { left: 28%; }\n    #ols-ms-deflection-stage .ols-field-lines span:nth-child(3) { left: 48%; }\n    #ols-ms-deflection-stage .ols-field-lines span:nth-child(4) { left: 68%; }\n    #ols-ms-deflection-stage .ols-field-lines span:nth-child(5) { left: 88%; }\n\n    #ols-ms-deflection-stage .ols-magnet-label {\n      position: absolute;\n      left: 52%;\n      top: 154px;\n      width: 270px;\n      transform: translateX(-50%);\n      text-align: center;\n      font-size: 14px;\n      line-height: 1.35;\n      font-weight: 800;\n      color: var(--ols-navy);\n      z-index: 8;\n    }\n\n    #ols-ms-deflection-stage .ols-ion {\n      position: absolute;\n      top: 50%;\n      border-radius: 50%;\n      transform: translate(-50%, -50%);\n      z-index: 7;\n      display: grid;\n      place-items: center;\n      color: #ffffff;\n      font-weight: 900;\n      box-shadow:\n        0 0 0 5px rgba(37, 99, 235, 0.12),\n        0 0 20px rgba(37, 99, 235, 0.36);\n    }\n\n    #ols-ms-deflection-stage .ols-ion::before {\n      content: \"+\";\n      transform: translateY(-1px);\n    }\n\n    #ols-ms-deflection-stage .ols-ion.small-blue {\n      width: 32px;\n      height: 32px;\n      left: 12%;\n      background:\n        radial-gradient(circle at 35% 30%, #ffffff, #9cc3ff 22%, #2563eb 60%, #1C244B 92%);\n      font-size: 22px;\n      animation: olsSmallIonPath 8s linear infinite;\n    }\n\n    #ols-ms-deflection-stage .ols-ion.large-green {\n      width: 48px;\n      height: 48px;\n      left: 7%;\n      background:\n        radial-gradient(circle at 35% 30%, #ffffff, #81e6b0 22%, #0f9d58 62%, #075f3b 94%);\n      font-size: 28px;\n      box-shadow:\n        0 0 0 6px rgba(15, 157, 88, 0.12),\n        0 0 24px rgba(15, 157, 88, 0.36);\n      animation: olsLargeIonPath 8s linear infinite;\n    }\n\n    #ols-ms-deflection-stage .ols-ion-label {\n      position: absolute;\n      left: 14%;\n      top: calc(50% + 58px);\n      font-size: 13px;\n      line-height: 1.35;\n      font-weight: 800;\n      color: var(--ols-navy);\n      text-align: center;\n      width: 190px;\n      z-index: 8;\n      opacity: 0;\n      animation: olsIonLabelShow 8s ease-in-out infinite;\n    }\n\n    #ols-ms-deflection-stage .ols-speed-lines {\n      position: absolute;\n      left: 18%;\n      top: calc(50% - 9px);\n      width: 22%;\n      height: 28px;\n      z-index: 2;\n      opacity: 0;\n      animation: olsSpeedLinesShow 8s ease-in-out infinite;\n    }\n\n    #ols-ms-deflection-stage .ols-speed-lines span {\n      position: absolute;\n      left: 0;\n      right: 0;\n      height: 4px;\n      border-radius: 999px;\n      background: linear-gradient(90deg, rgba(201, 151, 58, 0), rgba(201, 151, 58, 0.82));\n      animation: olsSpeedLineSweep 0.72s linear infinite;\n    }\n\n    #ols-ms-deflection-stage .ols-speed-lines span:nth-child(1) { top: 0; }\n    #ols-ms-deflection-stage .ols-speed-lines span:nth-child(2) { top: 8px; animation-delay: 0.12s; }\n    #ols-ms-deflection-stage .ols-speed-lines span:nth-child(3) { top: 16px; animation-delay: 0.24s; }\n    #ols-ms-deflection-stage .ols-speed-lines span:nth-child(4) { top: 24px; animation-delay: 0.36s; }\n\n    #ols-ms-deflection-stage .ols-result-label {\n      position: absolute;\n      left: 7%;\n      top: 25%;\n      width: min(270px, 28%);\n      padding: 12px 14px;\n      border-radius: 18px;\n      background: rgba(255, 255, 255, 0.94);\n      border: 1px solid rgba(28, 36, 75, 0.12);\n      box-shadow: 0 12px 28px rgba(28, 36, 75, 0.10);\n      font-size: 14px;\n      line-height: 1.45;\n      font-weight: 500;\n      color: rgba(28, 36, 75, 0.84);\n      z-index: 8;\n      opacity: 0;\n      animation: olsResultLabelShow 8s ease-in-out infinite;\n    }\n\n    #ols-ms-deflection-stage .ols-result-label strong {\n      display: block;\n      margin-bottom: 4px;\n      color: var(--ols-navy);\n      font-weight: 800;\n    }\n\n    #ols-ms-deflection-stage .ols-equation {\n      position: absolute;\n      left: 50%;\n      bottom: 26px;\n      transform: translateX(-50%);\n      width: min(88%, 820px);\n      padding: 16px 20px;\n      border-radius: 20px;\n      background: rgba(255, 255, 255, 0.94);\n      border: 1px solid rgba(28, 36, 75, 0.12);\n      box-shadow: 0 12px 28px rgba(28, 36, 75, 0.10);\n      text-align: center;\n      font-size: clamp(17px, 1.8vw, 25px);\n      line-height: 1.35;\n      font-weight: 800;\n      color: var(--ols-navy);\n      opacity: 0;\n      animation: olsEquationAppear 8s ease-in-out infinite;\n      z-index: 8;\n    }\n\n    #ols-ms-deflection-stage .ols-equation span.blue {\n      color: var(--ols-blue);\n    }\n\n    #ols-ms-deflection-stage .ols-equation span.green {\n      color: var(--ols-green);\n    }\n\n    #ols-ms-deflection-stage .ols-legend {\n      display: grid;\n      grid-template-columns: repeat(3, minmax(0, 1fr));\n      gap: 12px;\n      padding: 16px 18px;\n      background: #ffffff;\n      border-bottom: 1px solid rgba(28, 36, 75, 0.08);\n    }\n\n    #ols-ms-deflection-stage .ols-legend-item {\n      display: flex;\n      align-items: center;\n      gap: 10px;\n      padding: 12px 14px;\n      border-radius: 16px;\n      background: #f8fbff;\n      border: 1px solid rgba(28, 36, 75, 0.10);\n      font-size: 14px;\n      line-height: 1.45;\n      font-weight: 400;\n      color: rgba(28, 36, 75, 0.84);\n    }\n\n    #ols-ms-deflection-stage .ols-legend-dot {\n      width: 16px;\n      height: 16px;\n      border-radius: 50%;\n      flex: 0 0 auto;\n      box-shadow: 0 3px 8px rgba(28, 36, 75, 0.16);\n    }\n\n    #ols-ms-deflection-stage .ols-legend-dot.blue {\n      background: #2563eb;\n    }\n\n    #ols-ms-deflection-stage .ols-legend-dot.green {\n      width: 22px;\n      height: 22px;\n      background: #0f9d58;\n    }\n\n    #ols-ms-deflection-stage .ols-legend-dot.field {\n      border-radius: 6px;\n      background: linear-gradient(180deg, #2563eb, #c81e1e);\n    }\n\n    #ols-ms-deflection-stage .ols-controls {\n      display: flex;\n      flex-wrap: wrap;\n      gap: 10px;\n      padding: 16px 18px;\n      background: #ffffff;\n      border-bottom: 1px solid rgba(28, 36, 75, 0.08);\n    }\n\n    #ols-ms-deflection-stage .ols-btn {\n      appearance: none;\n      border: 1px solid rgba(28, 36, 75, 0.14);\n      background: #ffffff;\n      color: var(--ols-navy);\n      border-radius: 999px;\n      padding: 10px 15px;\n      font-family: Poppins, Arial, sans-serif;\n      font-size: 14px;\n      font-weight: 700;\n      cursor: pointer;\n      transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease, color 0.2s ease;\n    }\n\n    #ols-ms-deflection-stage .ols-btn:hover {\n      transform: translateY(-2px);\n      box-shadow: 0 8px 20px rgba(28, 36, 75, 0.12);\n    }\n\n    #ols-ms-deflection-stage .ols-btn.is-active {\n      background: var(--ols-navy);\n      color: #ffffff;\n      border-color: var(--ols-navy);\n    }\n\n    #ols-ms-deflection-stage .ols-explanation {\n      padding: 22px 26px 26px;\n      background: #ffffff;\n    }\n\n    #ols-ms-deflection-stage .ols-key-message {\n      margin: 0;\n      padding: 16px 18px;\n      border-radius: 18px;\n      background: var(--ols-soft-blue);\n      border: 1px solid rgba(37, 99, 235, 0.14);\n      font-size: 16px;\n      line-height: 1.65;\n      font-weight: 300;\n      color: rgba(28, 36, 75, 0.88);\n    }\n\n    #ols-ms-deflection-stage .ols-key-message strong {\n      font-weight: 800;\n      color: var(--ols-navy);\n    }\n\n    #ols-ms-deflection-stage .ols-explanation-grid {\n      display: grid;\n      grid-template-columns: repeat(3, minmax(0, 1fr));\n      gap: 14px;\n      margin-top: 16px;\n    }\n\n    #ols-ms-deflection-stage .ols-info-box {\n      border-radius: 18px;\n      padding: 16px;\n      background: #f8fbff;\n      border: 1px solid rgba(28, 36, 75, 0.10);\n      box-shadow: var(--ols-inner-shadow);\n    }\n\n    #ols-ms-deflection-stage .ols-info-box strong {\n      display: block;\n      font-size: 15px;\n      margin-bottom: 6px;\n      color: var(--ols-navy);\n    }\n\n    #ols-ms-deflection-stage .ols-info-box span {\n      display: block;\n      font-size: 14px;\n      line-height: 1.55;\n      font-weight: 300;\n      color: rgba(28, 36, 75, 0.80);\n    }\n\n    #ols-ms-deflection-stage .ols-copyright-footer {\n      padding: 16px 22px 20px;\n      background: #ffffff;\n      border-top: 1px solid rgba(28, 36, 75, 0.08);\n      text-align: center;\n      font-size: 13px;\n      line-height: 1.55;\n      font-weight: 500;\n      color: rgba(28, 36, 75, 0.70);\n    }\n\n    #ols-ms-deflection-stage .ols-copyright-footer strong {\n      color: var(--ols-navy);\n      font-weight: 800;\n    }\n\n    @keyframes olsDeflectStepOne {\n      0%, 8% {\n        opacity: 0;\n        transform: translateY(8px);\n      }\n      14%, 42% {\n        opacity: 1;\n        transform: translateY(0);\n      }\n      48%, 100% {\n        opacity: 0;\n        transform: translateY(-8px);\n      }\n    }\n\n    @keyframes olsDeflectStepTwo {\n      0%, 48% {\n        opacity: 0;\n        transform: translateY(8px);\n      }\n      56%, 100% {\n        opacity: 1;\n        transform: translateY(0);\n      }\n    }\n\n    @keyframes olsSmallIonPath {\n      0%, 8% {\n        left: 12%;\n        top: 50%;\n        opacity: 0;\n        transform: translate(-50%, -50%) scale(0.9);\n      }\n      14% {\n        left: 12%;\n        top: 50%;\n        opacity: 1;\n        transform: translate(-50%, -50%) scale(1);\n      }\n      40% {\n        left: 44%;\n        top: 50%;\n        opacity: 1;\n        transform: translate(-50%, -50%) scale(1);\n      }\n      55% {\n        left: 56%;\n        top: 50%;\n        opacity: 1;\n        transform: translate(-50%, -50%) scale(1);\n      }\n      72% {\n        left: 71%;\n        top: 41%;\n        opacity: 1;\n        transform: translate(-50%, -50%) scale(1);\n      }\n      100% {\n        left: 89%;\n        top: 27%;\n        opacity: 0;\n        transform: translate(-50%, -50%) scale(1);\n      }\n    }\n\n    @keyframes olsLargeIonPath {\n      0%, 8% {\n        left: 7%;\n        top: 50%;\n        opacity: 0;\n        transform: translate(-50%, -50%) scale(0.9);\n      }\n      14% {\n        left: 7%;\n        top: 50%;\n        opacity: 1;\n        transform: translate(-50%, -50%) scale(1);\n      }\n      40% {\n        left: 39%;\n        top: 50%;\n        opacity: 1;\n        transform: translate(-50%, -50%) scale(1);\n      }\n      55% {\n        left: 51%;\n        top: 50%;\n        opacity: 1;\n        transform: translate(-50%, -50%) scale(1);\n      }\n      72% {\n        left: 67%;\n        top: 48%;\n        opacity: 1;\n        transform: translate(-50%, -50%) scale(1);\n      }\n      100% {\n        left: 86%;\n        top: 43%;\n        opacity: 0;\n        transform: translate(-50%, -50%) scale(1);\n      }\n    }\n\n    @keyframes olsPathShow {\n      0%, 42% {\n        opacity: 0;\n      }\n      50%, 100% {\n        opacity: 1;\n      }\n    }\n\n    @keyframes olsFieldRegionShow {\n      0%, 32% {\n        opacity: 0;\n      }\n      40%, 100% {\n        opacity: 1;\n      }\n    }\n\n    @keyframes olsIonLabelShow {\n      0%, 14% {\n        opacity: 0;\n        transform: translateY(8px);\n      }\n      20%, 38% {\n        opacity: 1;\n        transform: translateY(0);\n      }\n      46%, 100% {\n        opacity: 0;\n        transform: translateY(-8px);\n      }\n    }\n\n    @keyframes olsSpeedLinesShow {\n      0%, 12% {\n        opacity: 0;\n      }\n      18%, 42% {\n        opacity: 1;\n      }\n      48%, 100% {\n        opacity: 0;\n      }\n    }\n\n    @keyframes olsSpeedLineSweep {\n      0% {\n        transform: translateX(-42px);\n        opacity: 0.1;\n      }\n      25% {\n        opacity: 0.7;\n      }\n      100% {\n        transform: translateX(95px);\n        opacity: 0.95;\n      }\n    }\n\n    @keyframes olsResultLabelShow {\n      0%, 54% {\n        opacity: 0;\n        transform: translateY(8px);\n      }\n      64%, 100% {\n        opacity: 1;\n        transform: translateY(0);\n      }\n    }\n\n    @keyframes olsEquationAppear {\n      0%, 58% {\n        opacity: 0;\n        transform: translateX(-50%) translateY(12px);\n      }\n      66%, 100% {\n        opacity: 1;\n        transform: translateX(-50%) translateY(0);\n      }\n    }\n\n    @media (max-width: 880px) {\n      #ols-ms-deflection-stage .ols-stage {\n        height: 540px;\n      }\n\n      #ols-ms-deflection-stage .ols-explanation-grid,\n      #ols-ms-deflection-stage .ols-legend {\n        grid-template-columns: 1fr;\n      }\n\n      #ols-ms-deflection-stage .ols-hint {\n        display: none;\n      }\n\n      #ols-ms-deflection-stage .ols-result-label {\n        left: 5%;\n        width: 32%;\n        font-size: 12px;\n      }\n\n      #ols-ms-deflection-stage .ols-magnet-region {\n        transform: translate(-50%, -50%) scale(0.86);\n      }\n\n      #ols-ms-deflection-stage .ols-magnet-label {\n        top: 148px;\n      }\n    }\n\n    @media (max-width: 560px) {\n      #ols-ms-deflection-stage .ols-ms-header,\n      #ols-ms-deflection-stage .ols-explanation {\n        padding-left: 18px;\n        padding-right: 18px;\n      }\n\n      #ols-ms-deflection-stage .ols-stage {\n        height: 500px;\n      }\n\n      #ols-ms-deflection-stage .ols-step-label {\n        top: 68px;\n        font-size: 15px;\n      }\n\n      #ols-ms-deflection-stage .ols-path-guide {\n        left: 2%;\n        top: 118px;\n        width: 96%;\n        height: 330px;\n      }\n\n      #ols-ms-deflection-stage .ols-magnet-region {\n        left: 52%;\n        transform: translate(-50%, -50%) scale(0.72);\n      }\n\n      #ols-ms-deflection-stage .ols-magnet-label {\n        left: 52%;\n        top: 150px;\n        font-size: 12px;\n      }\n\n      #ols-ms-deflection-stage .ols-result-label {\n        display: none;\n      }\n\n      #ols-ms-deflection-stage .ols-equation {\n        bottom: 18px;\n        padding: 14px;\n      }\n\n      #ols-ms-deflection-stage .ols-controls {\n        padding: 14px;\n      }\n\n      #ols-ms-deflection-stage .ols-btn {\n        width: 100%;\n      }\n    }\n  <\/style>\n\n  <div class=\"ols-ms-card\">\n    <div class=\"ols-ms-header\">\n      <div class=\"ols-ms-pill\">Mass spectrometer animation<\/div>\n      <h2 class=\"ols-ms-title\">Deflection of positive ions<\/h2>\n      <p class=\"ols-ms-subtitle\">\n        This animation shows two positive ions entering a magnetic field on the same trajectory. The smaller blue ion travels first, followed by the larger green ion behind it. Inside the magnetic field region, their paths split because the smaller ion is deflected more strongly.\n      <\/p>\n    <\/div>\n\n    <div class=\"ols-stage-wrap\">\n      <div class=\"ols-stage\">\n        <div class=\"ols-vacuum-label\">Deflection chamber<\/div>\n        <div class=\"ols-hint\">Pause or play using the control below<\/div>\n\n        <div class=\"ols-step-label\">\n          <span class=\"ols-step-one\">1. The ions travel along the same initial path, with the small blue ion first and the larger green ion behind.<\/span>\n          <span class=\"ols-step-two\">2. Their paths split inside the magnetic field because the lighter ion is deflected more strongly.<\/span>\n        <\/div>\n\n        <div class=\"ols-path-guide\" aria-hidden=\"true\">\n          <svg viewBox=\"0 0 1000 360\" preserveAspectRatio=\"none\">\n            <path class=\"ols-path-shared\" d=\"M 60 185 L 500 185\"><\/path>\n            <path class=\"ols-path-small\" d=\"M 500 185 C 600 178, 720 105, 940 28\"><\/path>\n            <path class=\"ols-path-large\" d=\"M 500 185 C 610 190, 735 178, 940 150\"><\/path>\n          <\/svg>\n        <\/div>\n\n        <div class=\"ols-speed-lines\" aria-hidden=\"true\">\n          <span><\/span>\n          <span><\/span>\n          <span><\/span>\n          <span><\/span>\n        <\/div>\n\n        <div class=\"ols-magnet-label\">magnetic field region<\/div>\n\n        <div class=\"ols-magnet-region\" aria-label=\"magnetic field region\">\n          <div class=\"ols-magnet-plate top\"><span>N<\/span><\/div>\n          <div class=\"ols-field-lines\">\n            <span><\/span>\n            <span><\/span>\n            <span><\/span>\n            <span><\/span>\n            <span><\/span>\n          <\/div>\n          <div class=\"ols-magnet-plate bottom\"><span>S<\/span><\/div>\n        <\/div>\n\n        <div class=\"ols-ion small-blue\" aria-label=\"smaller positive ion\"><\/div>\n        <div class=\"ols-ion large-green\" aria-label=\"larger positive ion\"><\/div>\n\n        <div class=\"ols-ion-label\">same initial trajectory<\/div>\n\n        <div class=\"ols-result-label\">\n          <strong>Deflection pattern<\/strong>\n          The path only splits after the ions enter the magnetic field. The smaller blue ion curves more than the larger green ion.\n        <\/div>\n\n        <div class=\"ols-equation\">\n          same charge and speed: <span class=\"blue\">lighter ion curves more<\/span> \u2022 <span class=\"green\">heavier ion curves less<\/span>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"ols-legend\" aria-label=\"Deflection animation legend\">\n      <div class=\"ols-legend-item\">\n        <span class=\"ols-legend-dot blue\"><\/span>\n        <span><strong>Small blue ion:<\/strong> lower mass-to-charge ratio, so it is deflected more strongly.<\/span>\n      <\/div>\n\n      <div class=\"ols-legend-item\">\n        <span class=\"ols-legend-dot green\"><\/span>\n        <span><strong>Large green ion:<\/strong> higher mass-to-charge ratio, so it is deflected less strongly.<\/span>\n      <\/div>\n\n      <div class=\"ols-legend-item\">\n        <span class=\"ols-legend-dot field\"><\/span>\n        <span><strong>Magnetic field:<\/strong> causes positive ions to follow different curved paths.<\/span>\n      <\/div>\n    <\/div>\n\n    <div class=\"ols-controls\">\n      <button type=\"button\" class=\"ols-btn is-active\" id=\"olsMsDeflectPauseBtn\">Pause animation<\/button>\n    <\/div>\n\n    <div class=\"ols-explanation\">\n      <p class=\"ols-key-message\">\n        <strong>Key idea:<\/strong> in the deflection stage, moving positive ions are deflected by a magnetic field. Before entering the magnetic field, both ions follow the <strong>same trajectory<\/strong>. Once they are inside the field, the <strong>lighter ion is deflected more<\/strong>, while the <strong>heavier ion is deflected less<\/strong>.\n      <\/p>\n\n      <div class=\"ols-explanation-grid\">\n        <div class=\"ols-info-box\">\n          <strong>Same initial trajectory<\/strong>\n          <span>The blue ion is shown first, with the larger green ion behind it. Both travel along the same path before the magnetic field.<\/span>\n        <\/div>\n\n        <div class=\"ols-info-box\">\n          <strong>Magnetic deflection<\/strong>\n          <span>The magnetic field changes the direction of motion of the ions, so their paths begin to split inside the field region.<\/span>\n        <\/div>\n\n        <div class=\"ols-info-box\">\n          <strong>Mass-to-charge ratio<\/strong>\n          <span>With the same charge and speed, the smaller mass-to-charge ratio gives greater deflection. The larger ion follows a less curved path.<\/span>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"ols-copyright-footer\">\n      <strong>\u00a9 Online Learning System.<\/strong> This educational animation, code structure, visual design and explanatory content are protected. Unauthorised copying, redistribution, resale, modification or republication is prohibited.\n    <\/div>\n  <\/div>\n\n  <script>\n    \/*\n      ===============================================================================\n      COPYRIGHT NOTICE\n      \u00a9 Online Learning System. All rights reserved.\n\n      This HTML, CSS, JavaScript animation, educational sequencing, visual layout,\n      code structure and explanatory content are the intellectual property of\n      Online Learning System.\n\n      Binary copyright marker:\n      01000011 01101111 01110000 01111001 01110010 01101001 01100111 01101000 01110100 00100000 01001111 01101110 01101100 01101001 01101110 01100101 00100000 01001100 01100101 01100001 01110010 01101110 01101001 01101110 01100111 00100000 01010011 01111001 01110011 01110100 01100101 01101101\n\n      Hex copyright marker:\n      43 6F 70 79 72 69 67 68 74 20 4F 6E 6C 69 6E 65 20 4C 65 61 72 6E 69 6E 67 20 53 79 73 74 65 6D\n      ===============================================================================\n    *\/\n\n    (function () {\n      const card = document.getElementById(\"ols-ms-deflection-stage\");\n      const pauseBtn = document.getElementById(\"olsMsDeflectPauseBtn\");\n\n      if (!card || !pauseBtn) {\n        return;\n      }\n\n      let manuallyPaused = false;\n\n      function pause() {\n        card.classList.add(\"ols-paused\");\n        pauseBtn.textContent = \"Play animation\";\n        pauseBtn.classList.remove(\"is-active\");\n      }\n\n      function play() {\n        card.classList.remove(\"ols-paused\");\n        pauseBtn.textContent = \"Pause animation\";\n        pauseBtn.classList.add(\"is-active\");\n      }\n\n      function togglePause() {\n        manuallyPaused = !card.classList.contains(\"ols-paused\");\n        if (manuallyPaused) {\n          pause();\n        } else {\n          play();\n        }\n      }\n\n      pauseBtn.addEventListener(\"click\", togglePause);\n\n      const observer = new IntersectionObserver(function (entries) {\n        entries.forEach(function (entry) {\n          if (entry.intersectionRatio >= 0.5) {\n            if (!manuallyPaused) { play(); }\n          } else {\n            pause();\n          }\n        });\n      }, { threshold: [0, 0.25, 0.5, 0.75, 1.0] });\n\n      observer.observe(card);\n    })();\n  <\/script>\n<\/section>\n      <\/article>\n\n      <article class=\"ols-note-card purple\">\n        <div class=\"ols-note-title\"><div class=\"ols-note-icon\">6<\/div><h2>Stage 4: Detection<\/h2><\/div>\n        <p>The deflected ions reach a detector plate. When a positive ion hits the detector, it gains an electron and becomes neutral.<\/p>\n        <p>Electrons flow from the detector to the positive ions, creating a small electrical current. This signal is amplified and sent to a computer.<\/p>\n        <p>The size of the detector signal is proportional to the number of ions reaching the detector. This is why the peak height or intensity in a mass spectrum shows <strong>relative abundance<\/strong>.<\/p>\n        <div class=\"ols-key-box\"><p><strong>Exam focus:<\/strong> More ions hitting the detector produce a larger current, so the signal represents greater abundance.<\/p><\/div>\n        <section id=\"ols-ms-detection-stage\" class=\"ols-ms-detection-stage is-playing\">\n  <style>\n    #ols-ms-detection-stage {\n      --ols-navy: #1C244B;\n      --ols-blue: #2563eb;\n      --ols-green: #0f9d58;\n      --ols-red: #c81e1e;\n      --ols-gold: #c9973a;\n      --ols-soft-blue: #eef4ff;\n      --ols-border: rgba(28, 36, 75, 0.14);\n      --ols-shadow: 0 14px 34px rgba(28, 36, 75, 0.12);\n      width: 100%;\n      margin: 28px auto;\n      font-family: Poppins, Arial, sans-serif;\n      color: var(--ols-navy);\n    }\n\n    #ols-ms-detection-stage,\n    #ols-ms-detection-stage * {\n      box-sizing: border-box;\n    }\n\n    #ols-ms-detection-stage.ols-paused *,\n    #ols-ms-detection-stage.ols-paused *::before,\n    #ols-ms-detection-stage.ols-paused *::after {\n      animation-play-state: paused !important;\n    }\n\n    #ols-ms-detection-stage .ols-ms-card {\n      width: 100%;\n      background: linear-gradient(180deg, #ffffff 0%, #f8fbff 100%);\n      border: 1px solid var(--ols-border);\n      border-radius: 28px;\n      box-shadow: var(--ols-shadow);\n      overflow: hidden;\n    }\n\n    #ols-ms-detection-stage .ols-ms-header {\n      padding: 24px 26px 16px;\n      border-bottom: 1px solid rgba(28, 36, 75, 0.08);\n      background:\n        radial-gradient(circle at top left, rgba(201, 151, 58, 0.16), transparent 34%),\n        radial-gradient(circle at top right, rgba(37, 99, 235, 0.12), transparent 32%),\n        #ffffff;\n    }\n\n    #ols-ms-detection-stage .ols-ms-pill {\n      display: inline-flex;\n      align-items: center;\n      gap: 8px;\n      padding: 7px 12px;\n      border-radius: 999px;\n      background: rgba(37, 99, 235, 0.10);\n      color: var(--ols-blue);\n      border: 1px solid rgba(37, 99, 235, 0.18);\n      font-size: 13px;\n      font-weight: 700;\n      margin-bottom: 12px;\n    }\n\n    #ols-ms-detection-stage .ols-ms-title {\n      margin: 0;\n      font-size: clamp(26px, 3vw, 40px);\n      line-height: 1.12;\n      font-weight: 700;\n      color: var(--ols-navy);\n      letter-spacing: -0.03em;\n    }\n\n    #ols-ms-detection-stage .ols-ms-subtitle {\n      margin: 12px 0 0;\n      font-size: clamp(16px, 1.4vw, 22px);\n      line-height: 1.55;\n      font-weight: 300;\n      color: rgba(28, 36, 75, 0.82);\n      max-width: 980px;\n    }\n\n    #ols-ms-detection-stage .ols-stage-wrap {\n      position: relative;\n      width: 100%;\n      background:\n        radial-gradient(circle at 20% 40%, rgba(37, 99, 235, 0.08), transparent 24%),\n        radial-gradient(circle at 50% 55%, rgba(15, 157, 88, 0.10), transparent 26%),\n        linear-gradient(180deg, #ffffff 0%, #f7f9fc 100%);\n      border-bottom: 1px solid rgba(28, 36, 75, 0.08);\n      overflow: hidden;\n    }\n\n    #ols-ms-detection-stage .ols-stage {\n      position: relative;\n      width: 100%;\n      height: 620px;\n      overflow: hidden;\n    }\n\n    #ols-ms-detection-stage .ols-label {\n      position: absolute;\n      z-index: 10;\n      display: inline-flex;\n      align-items: center;\n      padding: 8px 12px;\n      border-radius: 999px;\n      background: rgba(255, 255, 255, 0.92);\n      border: 1px solid rgba(28, 36, 75, 0.10);\n      box-shadow: 0 6px 18px rgba(28, 36, 75, 0.10);\n      font-size: 13px;\n      font-weight: 700;\n      color: var(--ols-navy);\n    }\n\n    #ols-ms-detection-stage .ols-label.left {\n      top: 16px;\n      left: 18px;\n    }\n\n    #ols-ms-detection-stage .ols-label.right {\n      top: 16px;\n      right: 18px;\n    }\n\n    #ols-ms-detection-stage .ols-step-label {\n      position: absolute;\n      left: 50%;\n      top: 74px;\n      transform: translateX(-50%);\n      width: min(92%, 900px);\n      min-height: 82px;\n      text-align: center;\n      font-size: clamp(16px, 1.6vw, 22px);\n      line-height: 1.45;\n      font-weight: 700;\n      color: rgba(28, 36, 75, 0.88);\n      z-index: 10;\n    }\n\n    #ols-ms-detection-stage .ols-step-label span {\n      position: absolute;\n      left: 0;\n      right: 0;\n      display: block;\n      opacity: 0;\n    }\n\n    #ols-ms-detection-stage .ols-step-one {\n      animation: olsDetectStepOne 12s ease-in-out infinite;\n    }\n\n    #ols-ms-detection-stage .ols-step-two {\n      animation: olsDetectStepTwo 12s ease-in-out infinite;\n    }\n\n    #ols-ms-detection-stage .ols-step-three {\n      animation: olsDetectStepThree 12s ease-in-out infinite;\n    }\n\n    #ols-ms-detection-stage .ols-path-guide {\n      position: absolute;\n      left: 4%;\n      top: 132px;\n      width: 62%;\n      height: 360px;\n      z-index: 2;\n      pointer-events: none;\n    }\n\n    #ols-ms-detection-stage .ols-path-guide svg {\n      width: 100%;\n      height: 100%;\n      overflow: visible;\n      display: block;\n    }\n\n    #ols-ms-detection-stage .ols-path-blue,\n    #ols-ms-detection-stage .ols-path-green {\n      fill: none;\n      stroke-width: 5;\n      stroke-dasharray: 12 10;\n      stroke-linecap: round;\n      opacity: 0.58;\n    }\n\n    #ols-ms-detection-stage .ols-path-blue {\n      stroke: rgba(37, 99, 235, 0.58);\n    }\n\n    #ols-ms-detection-stage .ols-path-green {\n      stroke: rgba(15, 157, 88, 0.60);\n    }\n\n    #ols-ms-detection-stage .ols-detector {\n      position: absolute;\n      left: 66%;\n      top: 50%;\n      width: 34px;\n      height: 310px;\n      transform: translateY(-50%);\n      border-radius: 18px;\n      background: linear-gradient(180deg, #f9fafb, #dce4f2);\n      border: 1px solid rgba(28, 36, 75, 0.18);\n      box-shadow:\n        0 16px 34px rgba(28, 36, 75, 0.18),\n        inset 0 4px 12px rgba(255, 255, 255, 0.9);\n      z-index: 5;\n    }\n\n\n    #ols-ms-detection-stage .ols-hit-flash {\n      position: absolute;\n      left: calc(66% + 3px);\n      width: 34px;\n      height: 34px;\n      border-radius: 50%;\n      transform: translate(-50%, -50%) scale(0.2);\n      opacity: 0;\n      z-index: 7;\n      pointer-events: none;\n    }\n\n    #ols-ms-detection-stage .ols-hit-flash.blue {\n      top: 33%;\n      background: rgba(37, 99, 235, 0.55);\n      animation: olsBlueHitFlash 12s linear infinite;\n    }\n\n    #ols-ms-detection-stage .ols-hit-flash.green {\n      top: 54%;\n      background: rgba(15, 157, 88, 0.55);\n      animation: olsGreenHitFlash 12s linear infinite;\n    }\n\n    #ols-ms-detection-stage .ols-electron {\n      position: absolute;\n      left: 64%;\n      width: 16px;\n      height: 16px;\n      border-radius: 50%;\n      display: grid;\n      place-items: center;\n      background: radial-gradient(circle at 35% 30%, #ffffff, #ffb7b7 22%, #c81e1e 70%);\n      color: white;\n      font-size: 15px;\n      font-weight: 900;\n      z-index: 8;\n      opacity: 0;\n      box-shadow: 0 0 16px rgba(200, 30, 30, 0.35);\n    }\n\n    #ols-ms-detection-stage .ols-electron::before {\n      content: \"\u2212\";\n      transform: translateY(-1px);\n    }\n\n    #ols-ms-detection-stage .ols-electron.blue-e {\n      top: 27%;\n      animation: olsBlueElectron 12s linear infinite;\n    }\n\n    #ols-ms-detection-stage .ols-electron.green-e {\n      top: 60%;\n      animation: olsGreenElectron 12s linear infinite;\n    }\n\n    #ols-ms-detection-stage .ols-ion {\n      position: absolute;\n      border-radius: 50%;\n      transform: translate(-50%, -50%);\n      z-index: 6;\n      display: grid;\n      place-items: center;\n      color: #ffffff;\n      font-weight: 900;\n    }\n\n    #ols-ms-detection-stage .ols-ion::before {\n      content: \"+\";\n      transform: translateY(-1px);\n    }\n\n    #ols-ms-detection-stage .ols-ion.is-neutral::before {\n      content: \"\";\n    }\n\n    #ols-ms-detection-stage .small-blue {\n      width: 32px;\n      height: 32px;\n      top: 33%;\n      background: radial-gradient(circle at 35% 30%, #ffffff, #9cc3ff 22%, #2563eb 60%, #1C244B 92%);\n      font-size: 22px;\n      box-shadow: 0 0 0 5px rgba(37, 99, 235, 0.12), 0 0 20px rgba(37, 99, 235, 0.36);\n    }\n\n    #ols-ms-detection-stage .large-green {\n      width: 48px;\n      height: 48px;\n      top: 54%;\n      background: radial-gradient(circle at 35% 30%, #ffffff, #81e6b0 22%, #0f9d58 62%, #075f3b 94%);\n      font-size: 28px;\n      box-shadow: 0 0 0 6px rgba(15, 157, 88, 0.12), 0 0 24px rgba(15, 157, 88, 0.36);\n    }\n\n    #ols-ms-detection-stage .blue-ion-1 { animation: olsBlueIonOne 12s linear infinite; }\n    #ols-ms-detection-stage .blue-ion-2 { animation: olsBlueIonTwo 12s linear infinite; }\n\n    #ols-ms-detection-stage .green-ion-1 { animation: olsGreenIonOne 12s linear infinite; }\n    #ols-ms-detection-stage .green-ion-2 { animation: olsGreenIonTwo 12s linear infinite; }\n    #ols-ms-detection-stage .green-ion-3 { animation: olsGreenIonThree 12s linear infinite; }\n    #ols-ms-detection-stage .green-ion-4 { animation: olsGreenIonFour 12s linear infinite; }\n\n    #ols-ms-detection-stage .ols-spectrum {\n      position: absolute;\n      left: 71%;\n      top: 27%;\n      width: 25%;\n      height: 280px;\n      z-index: 4;\n    }\n\n    #ols-ms-detection-stage .ols-spectrum-axis {\n      position: absolute;\n      left: 0;\n      top: 0;\n      width: 4px;\n      height: 100%;\n      border-radius: 999px;\n      background: rgba(28, 36, 75, 0.28);\n    }\n\n    #ols-ms-detection-stage .ols-spectrum-line {\n      position: absolute;\n      left: 0;\n      height: 18px;\n      border-radius: 0 999px 999px 0;\n      transform-origin: left center;\n      transform: scaleX(0);\n      box-shadow: 0 8px 20px rgba(28, 36, 75, 0.12);\n    }\n\n    #ols-ms-detection-stage .ols-spectrum-line.blue {\n      top: 38px;\n      width: 48%;\n      background: linear-gradient(90deg, #2563eb, rgba(37, 99, 235, 0.62));\n      animation: olsBlueAbundanceLine 12s linear infinite;\n    }\n\n    #ols-ms-detection-stage .ols-spectrum-line.green {\n      top: 158px;\n      width: 96%;\n      background: linear-gradient(90deg, #0f9d58, rgba(15, 157, 88, 0.62));\n      animation: olsGreenAbundanceLine 12s linear infinite;\n    }\n\n    #ols-ms-detection-stage .ols-spectrum-tag {\n      position: absolute;\n      left: 6px;\n      font-size: 13px;\n      font-weight: 800;\n      color: var(--ols-navy);\n      background: rgba(255, 255, 255, 0.92);\n      border: 1px solid rgba(28, 36, 75, 0.10);\n      border-radius: 999px;\n      padding: 6px 10px;\n      box-shadow: 0 6px 18px rgba(28, 36, 75, 0.08);\n    }\n\n    #ols-ms-detection-stage .ols-spectrum-tag.blue {\n      top: 8px;\n    }\n\n    #ols-ms-detection-stage .ols-spectrum-tag.green {\n      top: 128px;\n    }\n\n    #ols-ms-detection-stage .ols-spectrum-note {\n      position: absolute;\n      left: 70%;\n      bottom: 38px;\n      width: min(330px, 27%);\n      padding: 14px 16px;\n      border-radius: 18px;\n      background: rgba(255, 255, 255, 0.94);\n      border: 1px solid rgba(28, 36, 75, 0.12);\n      box-shadow: 0 12px 28px rgba(28, 36, 75, 0.10);\n      font-size: 14px;\n      line-height: 1.45;\n      font-weight: 500;\n      color: rgba(28, 36, 75, 0.84);\n      z-index: 9;\n      opacity: 0;\n      animation: olsSpectrumNoteShow 12s ease-in-out infinite;\n    }\n\n    #ols-ms-detection-stage .ols-spectrum-note strong {\n      display: block;\n      margin-bottom: 4px;\n      color: var(--ols-navy);\n      font-weight: 800;\n    }\n\n    #ols-ms-detection-stage .ols-neutral-label {\n      position: absolute;\n      left: 50%;\n      top: 75%;\n      transform: translateX(-50%);\n      width: min(430px, 50%);\n      padding: 12px 14px;\n      border-radius: 18px;\n      background: rgba(255, 255, 255, 0.94);\n      border: 1px solid rgba(28, 36, 75, 0.12);\n      box-shadow: 0 12px 28px rgba(28, 36, 75, 0.10);\n      font-size: 14px;\n      line-height: 1.45;\n      font-weight: 600;\n      color: rgba(28, 36, 75, 0.84);\n      z-index: 9;\n      text-align: center;\n      opacity: 0;\n      animation: olsNeutralNoteShow 12s ease-in-out infinite;\n    }\n\n    #ols-ms-detection-stage .ols-legend {\n      display: grid;\n      grid-template-columns: repeat(3, minmax(0, 1fr));\n      gap: 12px;\n      padding: 16px 18px;\n      background: #ffffff;\n      border-bottom: 1px solid rgba(28, 36, 75, 0.08);\n    }\n\n    #ols-ms-detection-stage .ols-legend-item {\n      display: flex;\n      align-items: center;\n      gap: 10px;\n      padding: 12px 14px;\n      border-radius: 16px;\n      background: #f8fbff;\n      border: 1px solid rgba(28, 36, 75, 0.10);\n      font-size: 14px;\n      line-height: 1.45;\n      font-weight: 400;\n      color: rgba(28, 36, 75, 0.84);\n    }\n\n    #ols-ms-detection-stage .ols-dot {\n      width: 16px;\n      height: 16px;\n      border-radius: 50%;\n      flex: 0 0 auto;\n      box-shadow: 0 3px 8px rgba(28, 36, 75, 0.16);\n    }\n\n    #ols-ms-detection-stage .ols-dot.blue { background: #2563eb; }\n    #ols-ms-detection-stage .ols-dot.green { width: 22px; height: 22px; background: #0f9d58; }\n    #ols-ms-detection-stage .ols-dot.red { background: #c81e1e; }\n\n    #ols-ms-detection-stage .ols-controls {\n      display: flex;\n      flex-wrap: wrap;\n      gap: 10px;\n      padding: 16px 18px;\n      background: #ffffff;\n      border-bottom: 1px solid rgba(28, 36, 75, 0.08);\n    }\n\n    #ols-ms-detection-stage .ols-btn {\n      appearance: none;\n      border: 1px solid rgba(28, 36, 75, 0.14);\n      background: #ffffff;\n      color: var(--ols-navy);\n      border-radius: 999px;\n      padding: 10px 15px;\n      font-family: Poppins, Arial, sans-serif;\n      font-size: 14px;\n      font-weight: 700;\n      cursor: pointer;\n      transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease, color 0.2s ease;\n    }\n\n    #ols-ms-detection-stage .ols-btn:hover {\n      transform: translateY(-2px);\n      box-shadow: 0 8px 20px rgba(28, 36, 75, 0.12);\n    }\n\n    #ols-ms-detection-stage .ols-btn.is-active {\n      background: var(--ols-navy);\n      color: #ffffff;\n      border-color: var(--ols-navy);\n    }\n\n    #ols-ms-detection-stage .ols-explanation {\n      padding: 22px 26px 26px;\n      background: #ffffff;\n    }\n\n    #ols-ms-detection-stage .ols-key-message {\n      margin: 0;\n      padding: 16px 18px;\n      border-radius: 18px;\n      background: var(--ols-soft-blue);\n      border: 1px solid rgba(37, 99, 235, 0.14);\n      font-size: 16px;\n      line-height: 1.65;\n      font-weight: 300;\n      color: rgba(28, 36, 75, 0.88);\n    }\n\n    #ols-ms-detection-stage .ols-key-message strong {\n      font-weight: 800;\n      color: var(--ols-navy);\n    }\n\n    #ols-ms-detection-stage .ols-copyright-footer {\n      padding: 16px 22px 20px;\n      background: #ffffff;\n      border-top: 1px solid rgba(28, 36, 75, 0.08);\n      text-align: center;\n      font-size: 13px;\n      line-height: 1.55;\n      font-weight: 500;\n      color: rgba(28, 36, 75, 0.70);\n    }\n\n    #ols-ms-detection-stage .ols-copyright-footer strong {\n      color: var(--ols-navy);\n      font-weight: 800;\n    }\n\n    @keyframes olsDetectStepOne {\n      0%, 5% { opacity: 0; transform: translateY(8px); }\n      8%, 35% { opacity: 1; transform: translateY(0); }\n      40%, 100% { opacity: 0; transform: translateY(-8px); }\n    }\n\n    @keyframes olsDetectStepTwo {\n      0%, 36% { opacity: 0; transform: translateY(8px); }\n      42%, 67% { opacity: 1; transform: translateY(0); }\n      72%, 100% { opacity: 0; transform: translateY(-8px); }\n    }\n\n    @keyframes olsDetectStepThree {\n      0%, 68% { opacity: 0; transform: translateY(8px); }\n      74%, 100% { opacity: 1; transform: translateY(0); }\n    }\n\n    @keyframes olsBlueIonOne {\n      0%, 6% { left: 18%; opacity: 0; }\n      8% { left: 18%; opacity: 1; }\n      18% { left: 66%; opacity: 1; }\n      20%, 100% { left: 66%; opacity: 0; }\n    }\n\n    @keyframes olsBlueIonTwo {\n      0%, 48% { left: 18%; opacity: 0; }\n      50% { left: 18%; opacity: 1; }\n      60% { left: 66%; opacity: 1; }\n      62%, 100% { left: 66%; opacity: 0; }\n    }\n\n    @keyframes olsGreenIonOne {\n      0%, 14% { left: 15%; opacity: 0; }\n      16% { left: 15%; opacity: 1; }\n      26% { left: 66%; opacity: 1; }\n      28%, 100% { left: 66%; opacity: 0; }\n    }\n\n    @keyframes olsGreenIonTwo {\n      0%, 30% { left: 15%; opacity: 0; }\n      32% { left: 15%; opacity: 1; }\n      42% { left: 66%; opacity: 1; }\n      44%, 100% { left: 66%; opacity: 0; }\n    }\n\n    @keyframes olsGreenIonThree {\n      0%, 64% { left: 15%; opacity: 0; }\n      66% { left: 15%; opacity: 1; }\n      76% { left: 66%; opacity: 1; }\n      78%, 100% { left: 66%; opacity: 0; }\n    }\n\n    @keyframes olsGreenIonFour {\n      0%, 78% { left: 15%; opacity: 0; }\n      80% { left: 15%; opacity: 1; }\n      90% { left: 66%; opacity: 1; }\n      92%, 100% { left: 66%; opacity: 0; }\n    }\n\n    @keyframes olsBlueElectron {\n      0%, 17% { opacity: 0; transform: translate(0, 0) scale(0.8); }\n      18% { opacity: 1; transform: translate(0, 0) scale(1); }\n      20% { opacity: 0; transform: translate(22px, 36px) scale(0.2); }\n      49%, 59% { opacity: 0; transform: translate(0, 0) scale(0.8); }\n      60% { opacity: 1; transform: translate(0, 0) scale(1); }\n      62% { opacity: 0; transform: translate(22px, 36px) scale(0.2); }\n      100% { opacity: 0; }\n    }\n\n    @keyframes olsGreenElectron {\n      0%, 25% { opacity: 0; transform: translate(0, 0) scale(0.8); }\n      26% { opacity: 1; transform: translate(0, 0) scale(1); }\n      28% { opacity: 0; transform: translate(22px, -18px) scale(0.2); }\n      41% { opacity: 0; transform: translate(0, 0) scale(0.8); }\n      42% { opacity: 1; transform: translate(0, 0) scale(1); }\n      44% { opacity: 0; transform: translate(22px, -18px) scale(0.2); }\n      75% { opacity: 0; transform: translate(0, 0) scale(0.8); }\n      76% { opacity: 1; transform: translate(0, 0) scale(1); }\n      78% { opacity: 0; transform: translate(22px, -18px) scale(0.2); }\n      89% { opacity: 0; transform: translate(0, 0) scale(0.8); }\n      90% { opacity: 1; transform: translate(0, 0) scale(1); }\n      92% { opacity: 0; transform: translate(22px, -18px) scale(0.2); }\n      100% { opacity: 0; }\n    }\n\n    @keyframes olsBlueHitFlash {\n      0%, 17% { opacity: 0; transform: translate(-50%, -50%) scale(0.2); }\n      18% { opacity: 1; transform: translate(-50%, -50%) scale(1.4); }\n      21% { opacity: 0; transform: translate(-50%, -50%) scale(0.2); }\n      59% { opacity: 0; transform: translate(-50%, -50%) scale(0.2); }\n      60% { opacity: 1; transform: translate(-50%, -50%) scale(1.4); }\n      63%, 100% { opacity: 0; transform: translate(-50%, -50%) scale(0.2); }\n    }\n\n    @keyframes olsGreenHitFlash {\n      0%, 25% { opacity: 0; transform: translate(-50%, -50%) scale(0.2); }\n      26% { opacity: 1; transform: translate(-50%, -50%) scale(1.4); }\n      29% { opacity: 0; transform: translate(-50%, -50%) scale(0.2); }\n      41% { opacity: 0; }\n      42% { opacity: 1; transform: translate(-50%, -50%) scale(1.4); }\n      45% { opacity: 0; transform: translate(-50%, -50%) scale(0.2); }\n      75% { opacity: 0; }\n      76% { opacity: 1; transform: translate(-50%, -50%) scale(1.4); }\n      79% { opacity: 0; transform: translate(-50%, -50%) scale(0.2); }\n      89% { opacity: 0; }\n      90% { opacity: 1; transform: translate(-50%, -50%) scale(1.4); }\n      93%, 100% { opacity: 0; transform: translate(-50%, -50%) scale(0.2); }\n    }\n\n    @keyframes olsBlueAbundanceLine {\n      0%, 17% { transform: scaleX(0); }\n      20%, 59% { transform: scaleX(0.5); }\n      62%, 100% { transform: scaleX(1); }\n    }\n\n    @keyframes olsGreenAbundanceLine {\n      0%, 25% { transform: scaleX(0); }\n      28%, 41% { transform: scaleX(0.25); }\n      44%, 75% { transform: scaleX(0.5); }\n      78%, 89% { transform: scaleX(0.75); }\n      92%, 100% { transform: scaleX(1); }\n    }\n\n    @keyframes olsNeutralNoteShow {\n      0%, 15% { opacity: 0; transform: translateX(-50%) translateY(8px); }\n      20%, 66% { opacity: 1; transform: translateX(-50%) translateY(0); }\n      72%, 100% { opacity: 0; transform: translateX(-50%) translateY(-8px); }\n    }\n\n    @keyframes olsSpectrumNoteShow {\n      0%, 70% { opacity: 0; transform: translateY(8px); }\n      76%, 100% { opacity: 1; transform: translateY(0); }\n    }\n\n    @media (max-width: 880px) {\n      #ols-ms-detection-stage .ols-stage {\n        height: 600px;\n      }\n\n      #ols-ms-detection-stage .ols-legend {\n        grid-template-columns: 1fr;\n      }\n\n      #ols-ms-detection-stage .ols-label.right {\n        display: none;\n      }\n\n      #ols-ms-detection-stage .ols-spectrum-note {\n        display: none;\n      }\n\n      #ols-ms-detection-stage .ols-spectrum {\n        left: 72%;\n        width: 24%;\n      }\n    }\n\n    @media (max-width: 560px) {\n      #ols-ms-detection-stage .ols-ms-header,\n      #ols-ms-detection-stage .ols-explanation {\n        padding-left: 18px;\n        padding-right: 18px;\n      }\n\n      #ols-ms-detection-stage .ols-stage {\n        height: 540px;\n      }\n\n      #ols-ms-detection-stage .ols-step-label {\n        top: 68px;\n        font-size: 15px;\n      }\n\n      #ols-ms-detection-stage .ols-neutral-label {\n        width: 78%;\n        top: 76%;\n      }\n\n      #ols-ms-detection-stage .ols-btn {\n        width: 100%;\n      }\n    }\n  <\/style>\n\n  <div class=\"ols-ms-card\">\n    <div class=\"ols-ms-header\">\n      <div class=\"ols-ms-pill\">Mass spectrometer animation<\/div>\n      <h2 class=\"ols-ms-title\">Detection of ions and abundance<\/h2>\n      <p class=\"ols-ms-subtitle\">\n        This animation shows separated positive ions reaching the detector. When each ion hits the detector plate, it gains an electron and becomes neutral. Each hit produces a signal, and the signal grows with the number of ions detected.\n      <\/p>\n    <\/div>\n\n    <div class=\"ols-stage-wrap\">\n      <div class=\"ols-stage\">\n        <div class=\"ols-label left\">Detection chamber<\/div>\n        <div class=\"ols-label right\">Signal size shows abundance<\/div>\n\n        <div class=\"ols-step-label\">\n          <span class=\"ols-step-one\">1. Separated ions continue from the deflection stage towards the detector.<\/span>\n          <span class=\"ols-step-two\">2. At the detector, each positive ion gains one electron and becomes neutral.<\/span>\n          <span class=\"ols-step-three\">3. More ion hits produce a larger signal, showing greater abundance.<\/span>\n        <\/div>\n\n        <div class=\"ols-path-guide\" aria-hidden=\"true\">\n          <svg viewBox=\"0 0 720 360\" preserveAspectRatio=\"none\">\n            <path class=\"ols-path-blue\" d=\"M 60 80 C 220 80, 360 80, 710 80\"><\/path>\n            <path class=\"ols-path-green\" d=\"M 60 205 C 220 205, 360 205, 710 205\"><\/path>\n          <\/svg>\n        <\/div>\n\n        <div class=\"ols-detector\" aria-label=\"detector plate\"><\/div>\n\n        <div class=\"ols-hit-flash blue\"><\/div>\n        <div class=\"ols-hit-flash green\"><\/div>\n\n        <div class=\"ols-electron blue-e\"><\/div>\n        <div class=\"ols-electron green-e\"><\/div>\n\n        <div class=\"ols-ion small-blue blue-ion-1\"><\/div>\n        <div class=\"ols-ion small-blue blue-ion-2\"><\/div>\n\n        <div class=\"ols-ion large-green green-ion-1\"><\/div>\n        <div class=\"ols-ion large-green green-ion-2\"><\/div>\n        <div class=\"ols-ion large-green green-ion-3\"><\/div>\n        <div class=\"ols-ion large-green green-ion-4\"><\/div>\n\n        <div class=\"ols-spectrum\">\n          <div class=\"ols-spectrum-axis\"><\/div>\n          <div class=\"ols-spectrum-tag blue\">blue isotope signal<\/div>\n          <div class=\"ols-spectrum-line blue\"><\/div>\n          <div class=\"ols-spectrum-tag green\">green isotope signal<\/div>\n          <div class=\"ols-spectrum-line green\"><\/div>\n        <\/div>\n\n        <div class=\"ols-neutral-label\">\n          Positive ion + electron \u2192 neutral atom. Each detector hit adds to the signal.\n        <\/div>\n\n        <div class=\"ols-spectrum-note\">\n          <strong>Relative abundance<\/strong>\n          Four green ions hit the detector compared with two blue ions. The green signal becomes twice as large as the blue signal.\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"ols-legend\">\n      <div class=\"ols-legend-item\">\n        <span class=\"ols-dot blue\"><\/span>\n        <span><strong>Blue ions:<\/strong> 2 detector hits, producing the smaller signal.<\/span>\n      <\/div>\n\n      <div class=\"ols-legend-item\">\n        <span class=\"ols-dot green\"><\/span>\n        <span><strong>Green ions:<\/strong> 4 detector hits, producing twice the signal.<\/span>\n      <\/div>\n\n      <div class=\"ols-legend-item\">\n        <span class=\"ols-dot red\"><\/span>\n        <span><strong>Electron gain:<\/strong> each positive ion gains one electron and becomes neutral.<\/span>\n      <\/div>\n    <\/div>\n\n    <div class=\"ols-controls\">\n      <button type=\"button\" class=\"ols-btn is-active\" id=\"olsMsDetectPauseBtn\">Pause animation<\/button>\n    <\/div>\n\n    <div class=\"ols-explanation\">\n      <p class=\"ols-key-message\">\n        <strong>Key idea:<\/strong> in the detection stage, positive ions hit the detector and gain electrons to become neutral atoms. Each collision creates a signal. The more ions that hit the detector, the larger the signal. Here, the green ion produces <strong>4 hits<\/strong> compared with <strong>2 blue hits<\/strong>, so the green peak is twice as large and has twice the relative abundance.\n      <\/p>\n    <\/div>\n\n    <div class=\"ols-copyright-footer\">\n      <strong>\u00a9 Online Learning System.<\/strong> This educational animation, code structure, visual design and explanatory content are protected. Unauthorised copying, redistribution, resale, modification or republication is prohibited.\n    <\/div>\n  <\/div>\n\n  <script>\n    (function () {\n      const card = document.getElementById(\"ols-ms-detection-stage\");\n      const pauseBtn = document.getElementById(\"olsMsDetectPauseBtn\");\n\n      if (!card || !pauseBtn) {\n        return;\n      }\n\n      let manuallyPaused = false;\n\n      function pause() {\n        card.classList.add(\"ols-paused\");\n        pauseBtn.textContent = \"Play animation\";\n        pauseBtn.classList.remove(\"is-active\");\n      }\n\n      function play() {\n        card.classList.remove(\"ols-paused\");\n        pauseBtn.textContent = \"Pause animation\";\n        pauseBtn.classList.add(\"is-active\");\n      }\n\n      function togglePause() {\n        manuallyPaused = !card.classList.contains(\"ols-paused\");\n        if (manuallyPaused) {\n          pause();\n        } else {\n          play();\n        }\n      }\n\n      pauseBtn.addEventListener(\"click\", togglePause);\n\n      const observer = new IntersectionObserver(function (entries) {\n        entries.forEach(function (entry) {\n          if (entry.intersectionRatio >= 0.5) {\n            if (!manuallyPaused) { play(); }\n          } else {\n            pause();\n          }\n        });\n      }, { threshold: [0, 0.25, 0.5, 0.75, 1.0] });\n\n      observer.observe(card);\n    })();\n  <\/script>\n<\/section>\n      <\/article>\n\n      <article class=\"ols-note-card orange\">\n        <div class=\"ols-note-title\"><div class=\"ols-note-icon\">7<\/div><h2>Changing the Magnetic Field<\/h2><\/div>\n        <p>For a fixed magnetic field strength, only ions with a particular m\/z value follow the correct path through the slit and reach the detector.<\/p>\n        <p>The magnetic field strength is then changed so that ions with different m\/z values can be detected. The computer combines these detector signals to produce the mass spectrum.<\/p>\n        <div class=\"ols-key-box\"><p><strong>Key idea:<\/strong> Changing the magnetic field lets the instrument scan across different m\/z values.<\/p><\/div>\n      <\/article>\n\n      <article class=\"ols-note-card\">\n        <div class=\"ols-note-title\"><div class=\"ols-note-icon\">8<\/div><h2>Common Exam Points<\/h2><\/div>\n        <p>Mass spectrometry questions often test precise sequencing, the role of the vacuum, the meaning of m\/z, and the link between detector current and abundance.<\/p>\n        <div class=\"ols-rule-list\">\n          <div class=\"ols-rule-item\"><h3>Use the correct sequence<\/h3><p>Vaporise the sample if needed, ionise it, accelerate the positive ions, deflect them in a magnetic field, then detect them.<\/p><\/div>\n          <div class=\"ols-rule-item\"><h3>State why a vacuum is needed<\/h3><p>A vacuum prevents collisions with air particles and prevents air particles from becoming ionised and detected.<\/p><\/div>\n          <div class=\"ols-rule-item\"><h3>Do not use mass alone when charge can vary<\/h3><p>Deflection depends on m\/z, not only mass. A higher charge lowers the m\/z value.<\/p><\/div>\n          <div class=\"ols-rule-item\"><h3>Link current to abundance<\/h3><p>A larger current is produced when more ions reach the detector, so signal intensity is proportional to abundance.<\/p><\/div>\n        <\/div>\n      <\/article>\n\n      <section class=\"ols-h5p-card\">\n        <h2>Check Your Understanding<\/h2>\n        <p>Use these short activities to check the sequence, ionisation, acceleration, deflection and detection stages before moving on.<\/p>\n        <div class=\"ols-h5p-frame\"><div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-236\" class=\"h5p-iframe\" data-content-id=\"236\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"TheMassSpectrometer.1 Drag: Mass Spectrometer Key Concepts\"><\/iframe><\/div><\/div>\n        <div class=\"ols-h5p-frame\"><div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-237\" class=\"h5p-iframe\" data-content-id=\"237\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"TheMassSpectrometer.2 MCQ: Electron Bombardment Ionisation\"><\/iframe><\/div><\/div>\n        <div class=\"ols-h5p-frame\"><div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-238\" class=\"h5p-iframe\" data-content-id=\"238\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"TheMassSpectrometer.3 MCQ: Deflection and m\/z\"><\/iframe><\/div><\/div>\n        <div class=\"ols-h5p-frame\"><div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-239\" class=\"h5p-iframe\" data-content-id=\"239\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"TheMassSpectrometer.4 MCQ: Detection and Relative Abundance\"><\/iframe><\/div><\/div>\n      <\/section>\n\n      <article class=\"ols-note-card purple\">\n        <div class=\"ols-note-title\"><div class=\"ols-note-icon\">\u2713<\/div><h2>QuickSnap<\/h2><\/div>\n        <p>In a mass spectrometer, the sample is first vaporised if needed, then ionised by electron bombardment to form positive ions. The positive ions are accelerated by an electric field and deflected by a magnetic field according to their m\/z value. Ions with smaller m\/z values are deflected more, while ions with larger m\/z values are deflected less. When ions reach the detector, they gain electrons and produce a current. The size of this current is proportional to the abundance of the ions reaching the detector.<\/p>\n        <div class=\"ols-rule-list\">\n          <div class=\"ols-rule-item\"><h3>Ionisation<\/h3><p>High-energy electrons remove electrons from gaseous particles, forming positive ions.<\/p><\/div>\n          <div class=\"ols-rule-item\"><h3>Acceleration<\/h3><p>Positive ions are attracted towards a negative electric field and form a beam.<\/p><\/div>\n          <div class=\"ols-rule-item\"><h3>Deflection<\/h3><p>The magnetic field separates ions by m\/z. Smaller m\/z means greater deflection.<\/p><\/div>\n          <div class=\"ols-rule-item\"><h3>Detection<\/h3><p>Positive ions gain electrons at the detector, producing a current proportional to abundance.<\/p><\/div>\n        <\/div>\n      <\/article>\n\n\n<section class=\"ols-course-cta-atomic-structure\" id=\"olsCourseCtaAtomicStructure002\">\n        <style>\n          .ols-course-cta-atomic-structure,\n          .ols-course-cta-atomic-structure * {\n            box-sizing: border-box;\n          }\n      \n          .ols-course-cta-atomic-structure {\n            --navy: #1C244B;\n            --blue: #2563eb;\n            --body-text: #1f2937;\n            --grey-text: #667085;\n            --border: rgba(28, 36, 75, 0.14);\n            --shadow: 0 18px 45px rgba(28, 36, 75, 0.12);\n            --inner-shadow: 0 10px 26px rgba(28, 36, 75, 0.08);\n      \n            width: 100%;\n            margin: 30px 0 24px;\n            font-family: Poppins, Arial, sans-serif;\n          }\n      \n          .ols-course-cta-atomic-structure .ols-course-cta-card {\n            overflow: hidden;\n            border-radius: 30px;\n            border: 1px solid var(--border);\n            background:\n              radial-gradient(circle at top left, rgba(37, 99, 235, 0.16), transparent 34%),\n              linear-gradient(135deg, #ffffff 0%, #f8fbff 100%);\n            box-shadow: var(--shadow);\n            padding: 30px;\n          }\n      \n          .ols-course-cta-atomic-structure .ols-course-cta-top {\n            display: grid;\n            grid-template-columns: minmax(260px, 0.9fr) minmax(0, 1.1fr);\n            gap: 28px;\n            align-items: center;\n            margin-bottom: 24px;\n          }\n      \n          .ols-course-cta-atomic-structure .ols-course-cta-image-link {\n            display: block;\n            text-decoration: none;\n            border-radius: 24px;\n          }\n      \n          .ols-course-cta-atomic-structure .ols-course-cta-image {\n            width: 100%;\n            border-radius: 24px;\n            overflow: hidden;\n            border: 1px solid var(--border);\n            background: #ffffff;\n            box-shadow: var(--inner-shadow);\n            transition:\n              transform 0.35s ease,\n              box-shadow 0.35s ease;\n          }\n      \n          .ols-course-cta-atomic-structure .ols-course-cta-image img {\n            width: 100%;\n            height: auto;\n            display: block;\n            transition: transform 0.45s ease;\n          }\n      \n          .ols-course-cta-atomic-structure .ols-course-cta-image-link:hover .ols-course-cta-image {\n            transform: translateY(-8px) scale(1.015);\n            box-shadow:\n              0 26px 60px rgba(28, 36, 75, 0.18),\n              0 0 0 1px rgba(37, 99, 235, 0.12);\n          }\n      \n          .ols-course-cta-atomic-structure .ols-course-cta-image-link:hover .ols-course-cta-image img {\n            transform: scale(1.03);\n          }\n      \n          .ols-course-cta-atomic-structure .ols-course-cta-header-row {\n            display: flex;\n            flex-wrap: wrap;\n            align-items: center;\n            justify-content: space-between;\n            gap: 14px;\n            margin-bottom: 18px;\n          }\n      \n          .ols-course-cta-atomic-structure .ols-course-cta-kicker {\n            display: inline-flex;\n            align-items: center;\n            padding: 8px 14px;\n            border-radius: 999px;\n            background: #ffffff;\n            border: 1px solid rgba(37, 99, 235, 0.18);\n            color: var(--blue);\n            font-size: 14px;\n            line-height: 1.2;\n            font-weight: 700;\n            box-shadow: var(--inner-shadow);\n          }\n      \n          .ols-course-cta-atomic-structure h2 {\n            margin: 0 0 14px;\n            font-size: clamp(28px, 3.5vw, 42px);\n            line-height: 1.15;\n            font-weight: 800;\n            letter-spacing: -0.03em;\n            color: #111827;\n          }\n      \n          .ols-course-cta-atomic-structure .ols-course-cta-intro-stats {\n            display: grid;\n            grid-template-columns: minmax(0, 1.08fr) minmax(320px, 0.92fr);\n            gap: 24px;\n            align-items: stretch;\n            margin: 0 0 30px;\n          }\n      \n          .ols-course-cta-atomic-structure .ols-course-cta-intro {\n            margin: 0;\n            color: var(--body-text);\n            font-size: clamp(16px, 1.4vw, 18px);\n            line-height: 1.7;\n            font-weight: 300;\n            align-self: center;\n          }\n      \n          .ols-course-cta-atomic-structure .ols-course-cta-stats {\n            display: grid;\n            grid-template-columns: repeat(2, minmax(0, 1fr));\n            gap: 14px;\n            margin: 0;\n          }\n      \n          .ols-course-cta-atomic-structure .ols-course-stat {\n            background: #ffffff;\n            border: 1px solid var(--border);\n            border-radius: 18px;\n            padding: 16px;\n            box-shadow: var(--inner-shadow);\n          }\n      \n          .ols-course-cta-atomic-structure .ols-course-stat span {\n            display: block;\n            margin-bottom: 6px;\n            color: var(--grey-text);\n            font-size: 13px;\n            line-height: 1.35;\n            font-weight: 700;\n          }\n      \n          .ols-course-cta-atomic-structure .ols-course-stat strong {\n            display: block;\n            color: var(--navy);\n            font-size: 18px;\n            line-height: 1.35;\n            font-weight: 800;\n          }\n      \n          .ols-course-cta-atomic-structure .ols-course-cta-features {\n            display: grid;\n            grid-template-columns: repeat(2, minmax(0, 1fr));\n            gap: 14px;\n            margin: 0 0 30px;\n          }\n      \n          .ols-course-cta-atomic-structure .ols-course-feature {\n            background: rgba(255, 255, 255, 0.78);\n            border: 1px solid var(--border);\n            border-radius: 18px;\n            padding: 16px 18px;\n          }\n      \n          .ols-course-cta-atomic-structure .ols-course-feature h3 {\n            margin: 0 0 6px;\n            color: var(--navy);\n            font-size: 18px;\n            line-height: 1.3;\n            font-weight: 800;\n          }\n      \n          .ols-course-cta-atomic-structure .ols-course-feature p {\n            margin: 0;\n            color: var(--body-text);\n            font-size: 15px;\n            line-height: 1.6;\n            font-weight: 300;\n          }\n      \n          .ols-course-cta-atomic-structure .ols-course-animation-wrap {\n            position: relative;\n            margin: 0 0 30px;\n            border-radius: 0;\n            overflow: visible;\n            border: 0;\n            background: transparent;\n            box-shadow: none;\n            padding: 0;\n          }\n      \n          .ols-course-cta-atomic-structure .ols-course-animation-title {\n            margin: 0 0 18px;\n            text-align: center;\n            color: var(--navy);\n            font-size: clamp(26px, 3.2vw, 40px);\n            line-height: 1.15;\n            font-weight: 700;\n            letter-spacing: -0.03em;\n            text-shadow: -9px 0 9px rgba(28, 36, 75, 0.10);\n          }\n      \n          .ols-course-cta-atomic-structure .ols-animation-frame-shell {\n            position: relative;\n            width: 100%;\n            height: 620px;\n            border-radius: 24px;\n            overflow: hidden;\n            background:\n              radial-gradient(circle at top left, rgba(70, 127, 247, 0.14), transparent 34%),\n              linear-gradient(135deg, #f8fbff 0%, #e9efff 100%);\n            box-shadow: 0 24px 64px rgba(28, 36, 75, 0.18);\n          }\n      \n          .ols-course-cta-atomic-structure .ols-animation-frame-shell iframe {\n            display: block;\n            width: 100%;\n            height: 100%;\n            border: 0;\n            background: #e9efff;\n          }\n      \n          .ols-course-cta-atomic-structure .ols-animation-start-overlay {\n            position: absolute;\n            inset: 0;\n            z-index: 5;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            border: 0;\n            cursor: pointer;\n            background:\n              radial-gradient(circle at center, rgba(255, 255, 255, 0.26), rgba(28, 36, 75, 0.28)),\n              url(\"https:\/\/www.onlinelearningsystem.net\/xyz\/wp-content\/uploads\/2026\/05\/T1-Atomic-Structure-and-The-Periodic-Table.jpg\");\n            background-size: cover;\n            background-position: center;\n            transition:\n              opacity 0.35s ease,\n              visibility 0.35s ease;\n          }\n      \n          .ols-course-cta-atomic-structure .ols-animation-start-overlay::before {\n            content: \"\";\n            position: absolute;\n            inset: 0;\n            background: rgba(28, 36, 75, 0.30);\n          }\n      \n          .ols-course-cta-atomic-structure .ols-animation-start-overlay.is-hidden {\n            opacity: 0;\n            visibility: hidden;\n            pointer-events: none;\n          }\n      \n          .ols-course-cta-atomic-structure .ols-animation-start-content {\n            position: relative;\n            z-index: 2;\n            display: grid;\n            justify-items: center;\n            gap: 16px;\n            padding: 24px;\n            text-align: center;\n          }\n      \n          .ols-course-cta-atomic-structure .ols-animation-play-circle {\n            width: 96px;\n            height: 96px;\n            border-radius: 50%;\n            background: #ffffff;\n            color: var(--navy);\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            box-shadow:\n              0 18px 40px rgba(28, 36, 75, 0.30),\n              0 0 0 12px rgba(255, 255, 255, 0.22);\n            animation: olsAnimationPlayPulse002 1.8s ease-in-out infinite;\n            transition:\n              transform 0.25s ease,\n              background 0.25s ease,\n              color 0.25s ease;\n          }\n      \n          .ols-course-cta-atomic-structure .ols-animation-start-overlay:hover .ols-animation-play-circle {\n            transform: scale(1.08);\n            background: var(--navy);\n            color: #ffffff;\n          }\n      \n          .ols-course-cta-atomic-structure .ols-animation-play-icon {\n            width: 0;\n            height: 0;\n            margin-left: 7px;\n            border-top: 18px solid transparent;\n            border-bottom: 18px solid transparent;\n            border-left: 28px solid currentColor;\n          }\n      \n          .ols-course-cta-atomic-structure .ols-animation-start-text {\n            max-width: 540px;\n            margin: 0;\n            color: #ffffff;\n            font-size: clamp(20px, 3vw, 32px);\n            line-height: 1.2;\n            font-weight: 800;\n            text-shadow: 0 8px 20px rgba(0, 0, 0, 0.28);\n          }\n      \n          .ols-course-cta-atomic-structure .ols-animation-pause-button {\n            position: absolute;\n            left: 16px;\n            bottom: 16px;\n            z-index: 7;\n            display: none;\n            align-items: center;\n            justify-content: center;\n            min-width: 92px;\n            padding: 10px 16px;\n            border: 0;\n            border-radius: 999px;\n            background: rgba(28, 36, 75, 0.92);\n            color: #ffffff;\n            font-family: Poppins, Arial, sans-serif;\n            font-size: 14px;\n            line-height: 1.2;\n            font-weight: 800;\n            cursor: pointer;\n            box-shadow: 0 12px 28px rgba(28, 36, 75, 0.24);\n            transition:\n              transform 0.2s ease,\n              background 0.2s ease,\n              box-shadow 0.2s ease;\n          }\n      \n          .ols-course-cta-atomic-structure .ols-animation-pause-button:hover {\n            transform: translateY(-2px);\n            background: var(--blue);\n            box-shadow: 0 16px 34px rgba(37, 99, 235, 0.28);\n          }\n      \n          .ols-course-cta-atomic-structure .ols-animation-pause-button.is-visible {\n            display: inline-flex;\n          }\n      \n          @keyframes olsAnimationPlayPulse002 {\n            0% {\n              box-shadow:\n                0 18px 40px rgba(28, 36, 75, 0.30),\n                0 0 0 0 rgba(255, 255, 255, 0.40);\n            }\n      \n            70% {\n              box-shadow:\n                0 18px 40px rgba(28, 36, 75, 0.30),\n                0 0 0 18px rgba(255, 255, 255, 0);\n            }\n      \n            100% {\n              box-shadow:\n                0 18px 40px rgba(28, 36, 75, 0.30),\n                0 0 0 0 rgba(255, 255, 255, 0);\n            }\n          }\n      \n          .ols-course-cta-atomic-structure .ols-course-video-status {\n            margin: 14px 0 0;\n            text-align: center;\n            color: var(--grey-text);\n            font-size: 13px;\n            line-height: 1.5;\n            font-weight: 500;\n          }\n      \n          .ols-course-cta-atomic-structure .ols-course-cta-bottom {\n            display: flex;\n            justify-content: center;\n            padding-top: 22px;\n            border-top: 1px solid var(--border);\n          }\n      \n          .ols-course-cta-atomic-structure .ols-course-button {\n            display: inline-flex;\n            align-items: center;\n            justify-content: center;\n            padding: 15px 28px;\n            border-radius: 999px;\n            background: var(--navy);\n            color: #ffffff;\n            text-decoration: none;\n            font-size: 16px;\n            line-height: 1.2;\n            font-weight: 800;\n            box-shadow: 0 12px 26px rgba(28, 36, 75, 0.18);\n            transition:\n              transform 0.2s ease,\n              background 0.2s ease,\n              box-shadow 0.2s ease;\n          }\n      \n          .ols-course-cta-atomic-structure .ols-course-button:hover {\n            transform: translateY(-2px);\n            background: var(--blue);\n            color: #ffffff;\n            box-shadow: 0 16px 32px rgba(37, 99, 235, 0.24);\n          }\n      \n          .ols-course-cta-atomic-structure .ols-course-button-top {\n            flex-shrink: 0;\n            padding: 12px 22px;\n            font-size: 15px;\n          }\n      \n          @media (max-width: 900px) {\n            .ols-course-cta-atomic-structure .ols-course-cta-top {\n              grid-template-columns: 1fr;\n            }\n      \n            .ols-course-cta-atomic-structure .ols-course-cta-image-link {\n              max-width: 520px;\n              margin: 0 auto;\n            }\n      \n            .ols-course-cta-atomic-structure .ols-course-cta-intro-stats {\n              grid-template-columns: 1fr;\n            }\n      \n            .ols-course-cta-atomic-structure .ols-animation-frame-shell {\n              height: 520px;\n            }\n          }\n      \n          @media (max-width: 760px) {\n            .ols-course-cta-atomic-structure {\n              margin: 26px 0 22px;\n            }\n      \n            .ols-course-cta-atomic-structure .ols-course-cta-card {\n              padding: 20px;\n              border-radius: 24px;\n            }\n      \n            .ols-course-cta-atomic-structure .ols-course-cta-header-row {\n              align-items: stretch;\n            }\n      \n            .ols-course-cta-atomic-structure .ols-course-button-top {\n              width: 100%;\n            }\n      \n            .ols-course-cta-atomic-structure .ols-course-cta-stats,\n            .ols-course-cta-atomic-structure .ols-course-cta-features {\n              grid-template-columns: 1fr;\n            }\n      \n            .ols-course-cta-atomic-structure .ols-course-animation-wrap {\n              padding: 0;\n              border-radius: 0;\n            }\n      \n            .ols-course-cta-atomic-structure .ols-animation-frame-shell {\n              height: 420px;\n              border-radius: 18px;\n            }\n      \n            .ols-course-cta-atomic-structure .ols-animation-play-circle {\n              width: 76px;\n              height: 76px;\n            }\n      \n            .ols-course-cta-atomic-structure .ols-animation-play-icon {\n              border-top-width: 14px;\n              border-bottom-width: 14px;\n              border-left-width: 22px;\n            }\n      \n            .ols-course-cta-atomic-structure .ols-animation-pause-button {\n              left: 12px;\n              bottom: 12px;\n              min-width: 84px;\n              padding: 9px 14px;\n              font-size: 13px;\n            }\n      \n            .ols-course-cta-atomic-structure .ols-course-button {\n              width: 100%;\n            }\n          }\n        <\/style>\n      \n        <div class=\"ols-course-cta-card\">\n      \n          <div class=\"ols-course-cta-top\">\n      \n            <a class=\"ols-course-cta-image-link\" href=\"https:\/\/www.onlinelearningsystem.net\/xyz\/product\/atomic-structure-and-the-periodic-table-topic-1\/\" aria-label=\"Open the Edexcel A Level Chemistry Topic 1 Atomic Structure and The Periodic Table course page\">\n      \n              <div class=\"ols-course-cta-image\">\n                <img decoding=\"async\"\n                  src=\"https:\/\/www.onlinelearningsystem.net\/xyz\/wp-content\/uploads\/2026\/05\/T1-Atomic-Structure-and-The-Periodic-Table.jpg\"\n                  alt=\"Edexcel A Level Chemistry Topic 1 Atomic Structure and The Periodic Table course banner\"\n                >\n              <\/div>\n      \n            <\/a>\n      \n            <div class=\"ols-course-cta-content\">\n      \n              <div class=\"ols-course-cta-header-row\">\n      \n                <div class=\"ols-course-cta-kicker\">\n                  Complete Topic 1 Atomic Structure &#038; The Periodic Table Course\n                <\/div>\n      \n                <a class=\"ols-course-button ols-course-button-top\" href=\"https:\/\/www.onlinelearningsystem.net\/xyz\/product\/atomic-structure-and-the-periodic-table-topic-1\/\">\n                  View Course\n                <\/a>\n      \n              <\/div>\n      \n              <h2>\n                Master Atomic Structure and The Periodic Table for Edexcel A Level Chemistry\n              <\/h2>\n      \n            <\/div>\n      \n          <\/div>\n      \n          <div class=\"ols-course-cta-intro-stats\">\n      \n            <p class=\"ols-course-cta-intro\">\n              Continue from these free revision notes into the full Topic 1 Atomic Structure and The Periodic Table course, with guided video teaching, diagnostic MCQ practice, teacher-marked short-answer questions and a specification assignment with a personalised progress report.\n            <\/p>\n      \n            <div class=\"ols-course-cta-stats\">\n      \n              <div class=\"ols-course-stat\">\n                <span>Guided learning<\/span>\n                <strong>18 hours<\/strong>\n              <\/div>\n      \n              <div class=\"ols-course-stat\">\n                <span>Video lessons<\/span>\n                <strong>369 mins<\/strong>\n              <\/div>\n      \n              <div class=\"ols-course-stat\">\n                <span>MCQ practice<\/span>\n                <strong>86 marks<\/strong>\n              <\/div>\n      \n              <div class=\"ols-course-stat\">\n                <span>SAQ practice<\/span>\n                <strong>215 marks<\/strong>\n              <\/div>\n      \n            <\/div>\n      \n          <\/div>\n      \n          <div class=\"ols-course-cta-features\">\n      \n            <div class=\"ols-course-feature\">\n              <h3>Guided video teaching<\/h3>\n              <p>\n                Learn atomic structure, isotopes, mass spectrometry, ionisation energy, electron configuration and periodic trends through structured video lessons with worked examples and walkthroughs.\n              <\/p>\n            <\/div>\n      \n            <div class=\"ols-course-feature\">\n              <h3>Instant MCQ feedback<\/h3>\n              <p>\n                Auto-marked MCQ quizzes provide immediate diagnostic feedback for every answer choice.\n              <\/p>\n            <\/div>\n      \n            <div class=\"ols-course-feature\">\n              <h3>Teacher-marked SAQs<\/h3>\n              <p>\n                Submit written exam responses and receive chemistry specialist feedback with improvement guidance.\n              <\/p>\n            <\/div>\n      \n            <div class=\"ols-course-feature\">\n              <h3>Progress tracking<\/h3>\n              <p>\n                Identify strengths and weaknesses across atomic structure, isotopes, mass spectrometry, ionisation energies, electron configuration and periodic trends with targeted reporting.\n              <\/p>\n            <\/div>\n      \n          <\/div>\n      \n          <div class=\"ols-course-animation-wrap\">\n      \n            <h3 class=\"ols-course-animation-title\">\n              See how the course works\n            <\/h3>\n      \n            <div class=\"ols-animation-frame-shell\">\n              <iframe\n                id=\"olsCourseAnimationFrame002\"\n                title=\"OLS course preview animation\"\n                loading=\"lazy\"\n                referrerpolicy=\"no-referrer\">\n              <\/iframe>\n      \n              <button\n                class=\"ols-animation-start-overlay\"\n                id=\"olsCourseAnimationStart002\"\n                type=\"button\"\n                aria-label=\"Play OLS course preview animation\">\n                <span class=\"ols-animation-start-content\">\n                  <span class=\"ols-animation-play-circle\" aria-hidden=\"true\">\n                    <span class=\"ols-animation-play-icon\"><\/span>\n                  <\/span>\n                  <span class=\"ols-animation-start-text\">\n                    Play course preview animation\n                  <\/span>\n                <\/span>\n              <\/button>\n      \n              <button\n                class=\"ols-animation-pause-button\"\n                id=\"olsCourseAnimationPause002\"\n                type=\"button\"\n                aria-label=\"Pause course preview animation\">\n                Pause\n              <\/button>\n            <\/div>\n      \n            <p class=\"ols-course-video-status\">\n              Click play to start the course preview animation.\n            <\/p>\n      \n          <\/div>\n      \n          <div class=\"ols-course-cta-bottom\">\n      \n            <a class=\"ols-course-button\" href=\"https:\/\/www.onlinelearningsystem.net\/xyz\/product\/atomic-structure-and-the-periodic-table-topic-1\/\">\n              View Atomic Structure &#038; The Periodic Table Topic 1 Course\n            <\/a>\n      \n          <\/div>\n      \n        <\/div>\n      \n        <template id=\"olsCourseAnimationTemplate002\">\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\" \/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/>\n<title>OLS Combined Promo Animation<\/title>\n\n<style>\n*{\n  box-sizing:border-box;\n}\n\n:root{\n  --ols-video-screen-w:1180;\n  --ols-video-screen-h:664;\n  --ols-video-screen-scale:1;\n\n  --ols-mcq-screen-w:1360;\n  --ols-mcq-screen-h:1130;\n  --ols-mcq-screen-scale:1;\n\n  --ols-saq-screen-w:1360;\n  --ols-saq-screen-h:965;\n  --ols-saq-screen-scale:1;\n}\n\nhtml,\nbody{\n  width:100%;\n  height:100%;\n}\n\nbody{\n  margin:0;\n  overflow:hidden;\n  font-family:Poppins,Arial,sans-serif;\n  background:#e9efff;\n}\n\n\/* ============================================================\n   GLOBAL SCENE SYSTEM\n============================================================ *\/\n\n.ols-combined-stage{\n  position:relative;\n  width:100vw;\n  height:100vh;\n  overflow:hidden;\n\n  background:\n    radial-gradient(circle at top left,rgba(70,127,247,0.14),transparent 34%),\n    linear-gradient(135deg,#f8fbff 0%,#e9efff 100%);\n}\n\n.ols-scene{\n  position:absolute;\n  inset:0;\n\n  width:100vw;\n  height:100vh;\n\n  opacity:0;\n  visibility:hidden;\n  pointer-events:none;\n}\n\n.ols-scene.active{\n  opacity:1;\n  visibility:visible;\n  pointer-events:auto;\n}\n\n.ols-scene.fade-out{\n  animation:olsSceneFadeOut 0.85s ease forwards;\n}\n\n@keyframes olsSceneFadeOut{\n  to{\n    opacity:0;\n    visibility:hidden;\n  }\n}\n\n.ols-title-cursor{\n  display:inline-block;\n\n  width:5px;\n  height:0.85em;\n\n  background:#1C244B;\n\n  margin-left:8px;\n\n  transform:translateY(8px);\n\n  animation:olsBlink 0.8s infinite;\n}\n\n.cursor{\n  display:inline-block;\n\n  width:3px;\n  height:28px;\n\n  background:#1c244b;\n\n  margin-left:3px;\n\n  transform:translateY(5px);\n\n  animation:olsBlink 0.8s infinite;\n}\n\n@keyframes olsBlink{\n  0%,45%{\n    opacity:1;\n  }\n  46%,100%{\n    opacity:0;\n  }\n}\n\n.ols-combined-stage.ols-animation-paused *,\n.ols-combined-stage.ols-animation-paused *::before,\n.ols-combined-stage.ols-animation-paused *::after{\n  animation-play-state:paused !important;\n}\n\n\/* ============================================================\n   1. VIRTUAL LESSON PROMO\n============================================================ *\/\n\n.ols-video-stage{\n  width:100vw;\n  height:100vh;\n\n  display:flex;\n  justify-content:center;\n  align-items:center;\n\n  padding:0;\n  overflow:hidden;\n\n  background:\n    radial-gradient(circle at top left,rgba(70,127,247,0.14),transparent 34%),\n    linear-gradient(135deg,#f8fbff 0%,#e9efff 100%);\n}\n\n.ols-video-title-screen{\n  position:absolute;\n  inset:0;\n  z-index:20;\n\n  display:flex;\n  justify-content:center;\n  align-items:center;\n\n  background:\n    radial-gradient(circle at top left,rgba(70,127,247,0.14),transparent 34%),\n    linear-gradient(135deg,#f8fbff 0%,#e9efff 100%);\n\n  opacity:1;\n  visibility:visible;\n  pointer-events:none;\n}\n\n.ols-video-title-screen.hide{\n  animation:olsVideoTitleFadeOut 0.85s ease forwards;\n}\n\n@keyframes olsVideoTitleFadeOut{\n  to{\n    opacity:0;\n    visibility:hidden;\n  }\n}\n\n.ols-video-title-wrap{\n  max-width:1250px;\n  padding:0 34px;\n  text-align:center;\n}\n\n.ols-video-title{\n  margin:0;\n\n  font-family:Poppins,Arial,sans-serif;\n\n  font-size:clamp(52px,8vw,124px);\n  font-weight:600;\n  line-height:1.08;\n\n  color:#1C244B;\n\n  text-shadow:-9px 0 9px rgba(28,36,75,0.16);\n\n  letter-spacing:-0.045em;\n}\n\n#videoTitleText{\n  white-space:pre-wrap;\n}\n\n.ols-video-scene{\n  width:100%;\n  height:100%;\n\n  display:flex;\n  justify-content:center;\n  align-items:center;\n\n  opacity:0;\n  visibility:hidden;\n}\n\n.ols-video-scene.show{\n  visibility:visible;\n  animation:olsVideoSceneIn 1s ease forwards;\n}\n\n@keyframes olsVideoSceneIn{\n  to{\n    opacity:1;\n  }\n}\n\n.ols-video-scale-wrap{\n  width:calc(var(--ols-video-screen-w) * 1px);\n  height:calc(var(--ols-video-screen-h) * 1px);\n\n  transform:scale(var(--ols-video-screen-scale));\n  transform-origin:center center;\n\n  display:flex;\n  justify-content:center;\n  align-items:center;\n}\n\n.ols-video-card{\n  width:1180px;\n  height:664px;\n\n  border-radius:28px;\n  overflow:hidden;\n\n  background:#1C244B;\n\n  box-shadow:\n    0 28px 80px rgba(28,36,75,0.28);\n\n  transform:translateY(24px) scale(0.96);\n  opacity:0;\n}\n\n.ols-video-scene.show .ols-video-card{\n  animation:olsVideoCardIn 1s cubic-bezier(.18,.89,.32,1.12) forwards;\n  animation-delay:0.2s;\n}\n\n@keyframes olsVideoCardIn{\n  to{\n    transform:translateY(0) scale(1);\n    opacity:1;\n  }\n}\n\n.ols-video-card video{\n  display:block;\n  width:100%;\n  height:100%;\n\n  aspect-ratio:16 \/ 9;\n  object-fit:cover;\n\n  border:0;\n}\n\n\/* ============================================================\n   2. MULTIPLE CHOICE FEEDBACK\n============================================================ *\/\n\n.ols-mcq-stage{\n  width:100vw;\n  height:100vh;\n\n  display:flex;\n  justify-content:center;\n  align-items:center;\n\n  padding:0;\n  overflow:hidden;\n\n  background:\n    radial-gradient(circle at top left,rgba(70,127,247,0.16),transparent 34%),\n    linear-gradient(135deg,#f8fbff 0%,#e9efff 100%);\n}\n\n.ols-mcq-intro-screen{\n  position:absolute;\n  inset:0;\n  z-index:50;\n\n  display:flex;\n  justify-content:center;\n  align-items:center;\n\n  background:\n    radial-gradient(circle at top left,rgba(70,127,247,0.14),transparent 34%),\n    linear-gradient(135deg,#f8fbff 0%,#e9efff 100%);\n\n  opacity:1;\n  visibility:visible;\n  pointer-events:none;\n}\n\n.ols-mcq-intro-screen.hide{\n  animation:olsMcqIntroFadeOut 0.85s ease forwards;\n}\n\n@keyframes olsMcqIntroFadeOut{\n  to{\n    opacity:0;\n    visibility:hidden;\n  }\n}\n\n.ols-mcq-intro-title-wrap{\n  max-width:1250px;\n  padding:0 34px;\n  text-align:center;\n}\n\n.ols-mcq-intro-title{\n  margin:0;\n\n  font-family:Poppins,Arial,sans-serif;\n\n  font-size:clamp(52px,8vw,124px);\n  font-weight:600;\n  line-height:1.08;\n\n  color:#1C244B;\n\n  text-shadow:-9px 0 9px rgba(28,36,75,0.16);\n\n  letter-spacing:-0.045em;\n}\n\n#mcqIntroTitleText{\n  white-space:pre-wrap;\n}\n\n.ols-mcq-scale-wrap{\n  width:calc(var(--ols-mcq-screen-w) * 1px);\n  height:calc(var(--ols-mcq-screen-h) * 1px);\n\n  transform:scale(var(--ols-mcq-screen-scale));\n  transform-origin:center center;\n\n  display:flex;\n  justify-content:center;\n  align-items:flex-start;\n}\n\n.ols-mcq-screen{\n  width:1360px;\n  height:1130px;\n\n  border-radius:22px;\n  overflow:hidden;\n\n  background:#eaf0ff;\n\n  box-shadow:\n    0 26px 70px rgba(28,36,75,0.22);\n\n  opacity:0;\n  transform:translateY(24px) scale(0.96);\n}\n\n.ols-mcq-screen.show{\n  animation:olsMcqScreenEnter 1s ease forwards;\n}\n\n@keyframes olsMcqScreenEnter{\n  from{\n    opacity:0;\n    transform:translateY(24px) scale(0.96);\n  }\n  to{\n    opacity:1;\n    transform:translateY(0) scale(1);\n  }\n}\n\n.mcq-question-area{\n  background:#eaf0ff;\n  padding:28px 30px 30px;\n  position:relative;\n  height:610px;\n}\n\n.mcq-question-lead{\n  margin:0 0 14px;\n  font-size:24px;\n  line-height:1.35;\n  color:#111827;\n}\n\n.mcq-ionic-table{\n  border-collapse:collapse;\n  width:500px;\n  margin-bottom:8px;\n  font-size:21px;\n  color:#111827;\n}\n\n.mcq-ionic-table th,\n.mcq-ionic-table td{\n  border:1.5px solid #c9ced8;\n  padding:12px 18px;\n  text-align:center;\n}\n\n.mcq-ionic-table th{\n  background:#f2f2f2;\n  font-weight:700;\n}\n\n.mcq-ionic-table td{\n  background:#eaf0ff;\n}\n\n.mcq-question-main{\n  margin:6px 0 28px;\n  font-size:24px;\n  line-height:1.35;\n  color:#111827;\n}\n\n.mcq-options-wrap{\n  display:flex;\n  flex-direction:column;\n  gap:17px;\n  max-width:1200px;\n}\n\n.mcq-option-row{\n  display:flex;\n  align-items:center;\n  min-height:34px;\n  position:relative;\n}\n\n.mcq-radio{\n  width:28px;\n  height:28px;\n  border-radius:50%;\n  border:2px solid #6b7280;\n  margin-right:16px;\n  background:transparent;\n  position:relative;\n  flex:0 0 auto;\n}\n\n.mcq-radio::after{\n  content:\"\";\n  position:absolute;\n  inset:5px;\n  border-radius:50%;\n  background:#6b7280;\n  opacity:0;\n  transform:scale(0.4);\n  transition:\n    opacity 0.25s ease,\n    transform 0.25s ease;\n}\n\n.mcq-option-row.selected .mcq-radio::after{\n  opacity:1;\n  transform:scale(1);\n}\n\n.mcq-option-row.selected .mcq-radio{\n  border-color:#4b5563;\n}\n\n.mcq-radio-ripple{\n  position:absolute;\n  left:14px;\n  top:50%;\n  width:28px;\n  height:28px;\n  border-radius:50%;\n  border:2px solid rgba(28,36,75,0.28);\n  transform:translate(-50%,-50%) scale(1);\n  opacity:0;\n  pointer-events:none;\n}\n\n.mcq-option-row.clicking .mcq-radio-ripple{\n  animation:mcqRipple 0.75s ease forwards;\n}\n\n@keyframes mcqRipple{\n  0%{\n    opacity:0.65;\n    transform:translate(-50%,-50%) scale(1);\n  }\n  100%{\n    opacity:0;\n    transform:translate(-50%,-50%) scale(2.5);\n  }\n}\n\n.mcq-option-label{\n  font-size:23px;\n  color:#111827;\n}\n\n.mcq-specific-feedback{\n  display:inline-flex;\n  align-items:center;\n  margin-left:18px;\n  min-height:38px;\n  opacity:0;\n  transform:translateX(-8px);\n}\n\n.mcq-specific-feedback.show{\n  opacity:1;\n  transform:translateX(0);\n  transition:\n    opacity 0.35s ease,\n    transform 0.35s ease;\n}\n\n.mcq-cross-icon{\n  width:26px;\n  height:26px;\n  border-radius:50%;\n  border:2px solid #d83255;\n  color:#d83255;\n\n  display:inline-flex;\n  justify-content:center;\n  align-items:center;\n\n  font-size:18px;\n  font-weight:700;\n\n  margin-right:12px;\n\n  opacity:0;\n  transform:scale(0.4);\n}\n\n.mcq-cross-icon.show{\n  animation:mcqCrossPop 0.35s ease forwards;\n}\n\n@keyframes mcqCrossPop{\n  70%{\n    opacity:1;\n    transform:scale(1.18);\n  }\n  100%{\n    opacity:1;\n    transform:scale(1);\n  }\n}\n\n.mcq-specific-feedback-text{\n  display:inline-block;\n\n  background:#fff4b8;\n  color:#111827;\n\n  padding:8px 16px;\n\n  font-size:22px;\n  line-height:1.35;\n\n  min-width:850px;\n  min-height:44px;\n}\n\n.mcq-submit-button{\n  position:absolute;\n  right:34px;\n  bottom:30px;\n\n  border:0;\n  border-radius:999px;\n\n  background:#1C244B;\n  color:#ffffff;\n\n  padding:14px 28px;\n\n  font-size:18px;\n  font-weight:600;\n\n  box-shadow:\n    0 14px 32px rgba(28,36,75,0.25);\n\n  cursor:default;\n\n  transform:translateY(0) scale(1);\n\n  transition:\n    transform 0.2s ease,\n    box-shadow 0.2s ease,\n    background 0.2s ease;\n}\n\n.mcq-submit-button.clicked{\n  transform:translateY(2px) scale(0.97);\n  background:#26315f;\n  box-shadow:\n    0 7px 18px rgba(28,36,75,0.22);\n}\n\n.mcq-general-feedback{\n  height:520px;\n\n  background:#fff3c9;\n  color:#8a6a00;\n\n  padding:26px 30px 28px;\n\n  font-size:23px;\n  line-height:1.34;\n\n  opacity:0;\n  transform:translateY(20px);\n\n  transition:\n    opacity 0.7s ease,\n    transform 0.7s ease;\n\n  overflow:hidden;\n}\n\n.mcq-general-feedback.show{\n  opacity:1;\n  transform:translateY(0);\n}\n\n#mcqGeneralText{\n  white-space:pre-wrap;\n}\n\n.mcq-specific-cursor{\n  background:#111827;\n}\n\n.mcq-general-cursor{\n  background:#8a6a00;\n}\n\n\/* ============================================================\n   3. SHORT ANSWER FEEDBACK\n============================================================ *\/\n\n.ols-saq-stage{\n  width:100vw;\n  height:100vh;\n\n  display:flex;\n  justify-content:center;\n  align-items:center;\n\n  padding:0;\n  overflow:hidden;\n\n  background:\n    radial-gradient(circle at top left,rgba(70,127,247,0.16),transparent 34%),\n    linear-gradient(135deg,#f8fbff 0%,#e9efff 100%);\n}\n\n.ols-saq-intro{\n  position:absolute;\n  inset:0;\n  z-index:50;\n\n  display:flex;\n  justify-content:center;\n  align-items:center;\n\n  background:\n    radial-gradient(circle at top left,rgba(70,127,247,0.14),transparent 34%),\n    linear-gradient(135deg,#f8fbff 0%,#e9efff 100%);\n\n  opacity:1;\n  visibility:visible;\n  pointer-events:none;\n}\n\n.ols-saq-intro.hide{\n  animation:olsSaqIntroFadeOut 0.85s ease forwards;\n}\n\n@keyframes olsSaqIntroFadeOut{\n  to{\n    opacity:0;\n    visibility:hidden;\n  }\n}\n\n.ols-saq-intro-title-wrap{\n  max-width:1250px;\n  padding:0 34px;\n  text-align:center;\n}\n\n.ols-saq-intro-title{\n  margin:0;\n\n  font-family:Poppins,Arial,sans-serif;\n\n  font-size:clamp(52px,8vw,124px);\n  font-weight:600;\n  line-height:1.08;\n\n  color:#1C244B;\n\n  text-shadow:-9px 0 9px rgba(28,36,75,0.16);\n\n  letter-spacing:-0.045em;\n}\n\n#saqIntroTitleText{\n  white-space:pre-wrap;\n}\n\n.ols-saq-scale-wrap{\n  width:calc(var(--ols-saq-screen-w) * 1px);\n  height:calc(var(--ols-saq-screen-h) * 1px);\n\n  transform:scale(var(--ols-saq-screen-scale));\n  transform-origin:center center;\n\n  display:flex;\n  justify-content:center;\n  align-items:flex-start;\n}\n\n.ols-saq-screen{\n  width:1360px;\n  height:965px;\n\n  border-radius:22px;\n  overflow:hidden;\n\n  background:#eaf0ff;\n\n  box-shadow:\n    0 26px 70px rgba(28,36,75,0.22);\n\n  opacity:0;\n  transform:translateY(24px) scale(0.96);\n}\n\n.ols-saq-screen.show{\n  animation:olsSaqScreenEnter 1s ease forwards;\n}\n\n@keyframes olsSaqScreenEnter{\n  from{\n    opacity:0;\n    transform:translateY(24px) scale(0.96);\n  }\n  to{\n    opacity:1;\n    transform:translateY(0) scale(1);\n  }\n}\n\n.saq-question-area{\n  height:335px;\n  background:#eaf0ff;\n  padding:30px 40px 32px;\n}\n\n.saq-question-text{\n  font-size:25px;\n  line-height:1.42;\n  color:#111827;\n  margin-bottom:22px;\n}\n\n.saq-student-box{\n  height:195px;\n\n  background:#f3f4f6;\n\n  border:2px solid #cfd6e3;\n  border-radius:8px;\n\n  padding:23px 26px;\n\n  font-size:24px;\n  line-height:1.55;\n\n  color:#4b5563;\n\n  position:relative;\n  overflow:hidden;\n}\n\n.saq-teacher-feedback{\n  height:630px;\n\n  background:#dff3e6;\n  color:#075f3b;\n\n  padding:28px 40px 30px;\n\n  font-size:23px;\n  line-height:1.47;\n\n  opacity:0;\n  transform:translateY(20px);\n\n  transition:\n    opacity 0.7s ease,\n    transform 0.7s ease;\n\n  overflow:hidden;\n}\n\n.saq-teacher-feedback.show{\n  opacity:1;\n  transform:translateY(0);\n}\n\n#saqTeacherText{\n  white-space:pre-wrap;\n}\n\n.saq-teacher-cursor{\n  background:#075f3b;\n}\n\n\/* ============================================================\n   SMALL WINDOW PROTECTION\n============================================================ *\/\n\n@media(max-width:900px){\n\n  .ols-video-title,\n  .ols-mcq-intro-title,\n  .ols-saq-intro-title{\n    font-size:clamp(42px,11vw,78px);\n    line-height:1.12;\n  }\n\n  .ols-title-cursor{\n    width:4px;\n    margin-left:6px;\n  }\n\n  .ols-video-card{\n    border-radius:20px;\n  }\n\n}\n<\/style>\n<\/head>\n\n<body>\n\n<div class=\"ols-combined-stage\">\n\n  <!-- ========================================================\n       SCENE 1: VIRTUAL LESSON\n  ========================================================= -->\n\n  <section id=\"sceneVideo\" class=\"ols-scene active\">\n\n    <div class=\"ols-video-stage\">\n\n      <div id=\"videoTitleScreen\" class=\"ols-video-title-screen\">\n\n        <div class=\"ols-video-title-wrap\">\n          <h1 class=\"ols-video-title\">\n            <span id=\"videoTitleText\"><\/span><span id=\"videoTitleCursor\" class=\"ols-title-cursor\"><\/span>\n          <\/h1>\n        <\/div>\n\n      <\/div>\n\n      <section id=\"videoScene\" class=\"ols-video-scene\">\n\n        <div class=\"ols-video-scale-wrap\">\n\n          <div class=\"ols-video-card\">\n            <video\n              id=\"lessonVideo\"\n              src=\"https:\/\/www.onlinelearningsystem.net\/xyz\/wp-content\/uploads\/2026\/05\/Virtual-Lesson.mp4\"\n              muted\n              playsinline\n              preload=\"auto\">\n            <\/video>\n          <\/div>\n\n        <\/div>\n\n      <\/section>\n\n    <\/div>\n\n  <\/section>\n\n  <!-- ========================================================\n       SCENE 2: MULTIPLE CHOICE FEEDBACK\n  ========================================================= -->\n\n  <section id=\"sceneMcq\" class=\"ols-scene\">\n\n    <div class=\"ols-mcq-stage\">\n\n      <div id=\"mcqIntroScreen\" class=\"ols-mcq-intro-screen\">\n        <div class=\"ols-mcq-intro-title-wrap\">\n          <h1 class=\"ols-mcq-intro-title\">\n            <span id=\"mcqIntroTitleText\"><\/span><span id=\"mcqIntroTitleCursor\" class=\"ols-title-cursor\"><\/span>\n          <\/h1>\n        <\/div>\n      <\/div>\n\n      <div class=\"ols-mcq-scale-wrap\">\n\n        <main id=\"mcqScreen\" class=\"ols-mcq-screen\">\n\n          <section class=\"mcq-question-area\">\n\n            <p class=\"mcq-question-lead\">Some ionic radii are shown.<\/p>\n\n            <table class=\"mcq-ionic-table\">\n              <thead>\n                <tr>\n                  <th>Ion<\/th>\n                  <th>Ionic radius \/ nm<\/th>\n                <\/tr>\n              <\/thead>\n\n              <tbody>\n                <tr>\n                  <td>Na<sup>+<\/sup><\/td>\n                  <td>0.102<\/td>\n                <\/tr>\n\n                <tr>\n                  <td>K<sup>+<\/sup><\/td>\n                  <td>0.138<\/td>\n                <\/tr>\n\n                <tr>\n                  <td>F<sup>\u2212<\/sup><\/td>\n                  <td>0.133<\/td>\n                <\/tr>\n\n                <tr>\n                  <td>Cl<sup>\u2212<\/sup><\/td>\n                  <td>0.180<\/td>\n                <\/tr>\n              <\/tbody>\n            <\/table>\n\n            <p class=\"mcq-question-main\">Which compound has the strongest ionic bonding?<\/p>\n\n            <div class=\"mcq-options-wrap\">\n\n              <div id=\"mcqWrongOption\" class=\"mcq-option-row\">\n                <span class=\"mcq-radio\"><\/span>\n                <span class=\"mcq-radio-ripple\"><\/span>\n                <span class=\"mcq-option-label\">sodium chloride<\/span>\n\n                <span id=\"mcqSpecificFeedback\" class=\"mcq-specific-feedback\">\n                  <span id=\"mcqCrossIcon\" class=\"mcq-cross-icon\">\u00d7<\/span>\n                  <span class=\"mcq-specific-feedback-text\">\n                    <span id=\"mcqSpecificText\"><\/span><span id=\"mcqSpecificCursor\" class=\"cursor mcq-specific-cursor\" style=\"display:none;\"><\/span>\n                  <\/span>\n                <\/span>\n              <\/div>\n\n              <div class=\"mcq-option-row\">\n                <span class=\"mcq-radio\"><\/span>\n                <span class=\"mcq-radio-ripple\"><\/span>\n                <span class=\"mcq-option-label\">potassium chloride<\/span>\n              <\/div>\n\n              <div class=\"mcq-option-row\">\n                <span class=\"mcq-radio\"><\/span>\n                <span class=\"mcq-radio-ripple\"><\/span>\n                <span class=\"mcq-option-label\">sodium fluoride<\/span>\n              <\/div>\n\n              <div class=\"mcq-option-row\">\n                <span class=\"mcq-radio\"><\/span>\n                <span class=\"mcq-radio-ripple\"><\/span>\n                <span class=\"mcq-option-label\">potassium fluoride<\/span>\n              <\/div>\n\n            <\/div>\n\n            <button id=\"mcqSubmitButton\" class=\"mcq-submit-button\">Submit answer<\/button>\n\n          <\/section>\n\n          <section id=\"mcqGeneralFeedback\" class=\"mcq-general-feedback\">\n            <span id=\"mcqGeneralText\"><\/span><span id=\"mcqGeneralCursor\" class=\"cursor mcq-general-cursor\" style=\"display:none;\"><\/span>\n          <\/section>\n\n        <\/main>\n\n      <\/div>\n\n    <\/div>\n\n  <\/section>\n\n  <!-- ========================================================\n       SCENE 3: SHORT ANSWER FEEDBACK\n  ========================================================= -->\n\n  <section id=\"sceneSaq\" class=\"ols-scene\">\n\n    <div class=\"ols-saq-stage\">\n\n      <div id=\"saqIntro\" class=\"ols-saq-intro\">\n        <div class=\"ols-saq-intro-title-wrap\">\n          <h1 class=\"ols-saq-intro-title\">\n            <span id=\"saqIntroTitleText\"><\/span><span id=\"saqIntroTitleCursor\" class=\"ols-title-cursor\"><\/span>\n          <\/h1>\n        <\/div>\n      <\/div>\n\n      <div class=\"ols-saq-scale-wrap\">\n\n        <main id=\"saqScreen\" class=\"ols-saq-screen\">\n\n          <section class=\"saq-question-area\">\n\n            <div class=\"saq-question-text\">\n              <strong>(ii)<\/strong>&nbsp;&nbsp; Melting temperature depends on the strength of metallic bonding.<br>\n              Explain why the metallic bonding in magnesium is much stronger than that in sodium.\n            <\/div>\n\n            <div class=\"saq-student-box\">\n              <span id=\"saqStudentText\"><\/span><span id=\"saqStudentCursor\" class=\"cursor\"><\/span>\n            <\/div>\n\n          <\/section>\n\n          <section id=\"saqTeacherFeedback\" class=\"saq-teacher-feedback\">\n            <span id=\"saqTeacherText\"><\/span><span id=\"saqTeacherCursor\" class=\"cursor saq-teacher-cursor\" style=\"display:none;\"><\/span>\n          <\/section>\n\n        <\/main>\n\n      <\/div>\n\n    <\/div>\n\n  <\/section>\n\n<\/div>\n\n<script>\n\/* ============================================================\n   70% VIEWPORT PLAY \/ PAUSE CONTROLLER\n============================================================ *\/\n\nconst olsStage =\ndocument.querySelector(\".ols-combined-stage\");\n\nlet olsAnimationHasStarted = false;\nlet olsAnimationIsVisibleEnough = false;\nlet olsAnimationPaused = true;\n\nconst olsNativeSetTimeout = window.setTimeout.bind(window);\nconst olsNativeClearTimeout = window.clearTimeout.bind(window);\nconst olsPausableTimers = new Map();\nlet olsPausableTimerId = 1;\n\nwindow.setTimeout = function(callback,delay,...args){\n\n  const timerId = olsPausableTimerId++;\n\n  const timer = {\n    callback,\n    delay:Number(delay) || 0,\n    remaining:Number(delay) || 0,\n    args,\n    startedAt:Date.now(),\n    nativeId:null,\n    completed:false\n  };\n\n  function runTimer(){\n\n    if(timer.completed){\n      return;\n    }\n\n    timer.completed = true;\n    olsPausableTimers.delete(timerId);\n    callback(...args);\n\n  }\n\n  timer.runTimer = runTimer;\n\n  olsPausableTimers.set(timerId,timer);\n\n  if(!olsAnimationPaused && olsAnimationIsVisibleEnough){\n    timer.startedAt = Date.now();\n    timer.nativeId = olsNativeSetTimeout(runTimer,timer.remaining);\n  }\n\n  return timerId;\n\n};\n\nwindow.clearTimeout = function(timerId){\n\n  const timer = olsPausableTimers.get(timerId);\n\n  if(timer){\n\n    timer.completed = true;\n\n    if(timer.nativeId !== null){\n      olsNativeClearTimeout(timer.nativeId);\n    }\n\n    olsPausableTimers.delete(timerId);\n\n  }\n\n};\n\nfunction olsPauseTimers(){\n\n  olsPausableTimers.forEach((timer) => {\n\n    if(timer.completed){\n      return;\n    }\n\n    if(timer.nativeId !== null){\n\n      const elapsed = Date.now() - timer.startedAt;\n      timer.remaining = Math.max(0,timer.remaining - elapsed);\n\n      olsNativeClearTimeout(timer.nativeId);\n      timer.nativeId = null;\n\n    }\n\n  });\n\n}\n\nfunction olsResumeTimers(){\n\n  olsPausableTimers.forEach((timer) => {\n\n    if(timer.completed || timer.nativeId !== null){\n      return;\n    }\n\n    timer.startedAt = Date.now();\n    timer.nativeId = olsNativeSetTimeout(timer.runTimer,timer.remaining);\n\n  });\n\n}\n\nfunction olsPauseAnimation(){\n\n  if(olsAnimationPaused){\n    return;\n  }\n\n  olsAnimationPaused = true;\n\n  if(olsStage){\n    olsStage.classList.add(\"ols-animation-paused\");\n  }\n\n  if(typeof lessonVideo !== \"undefined\" && lessonVideo){\n    lessonVideo.pause();\n  }\n\n  olsPauseTimers();\n\n}\n\nfunction olsResumeAnimation(){\n\n  if(!olsAnimationPaused){\n    return;\n  }\n\n  olsAnimationPaused = false;\n\n  if(olsStage){\n    olsStage.classList.remove(\"ols-animation-paused\");\n  }\n\n  olsResumeTimers();\n\n  if(\n    typeof lessonVideo !== \"undefined\" &&\n    lessonVideo &&\n    videoScene &&\n    videoScene.classList.contains(\"show\") &&\n    !videoSceneComplete &&\n    !lessonVideo.ended\n  ){\n\n    lessonVideo.muted = true;\n\n    const resumePromise = lessonVideo.play();\n\n    if(resumePromise !== undefined){\n      resumePromise.catch(() => {});\n    }\n\n  }\n\n}\n\nfunction olsGetVisibleRatio(element){\n\n  if(!element){\n    return 0;\n  }\n\n  const rect = element.getBoundingClientRect();\n  const viewportHeight = window.innerHeight || document.documentElement.clientHeight;\n  const viewportWidth = window.innerWidth || document.documentElement.clientWidth;\n\n  const visibleHeight = Math.max(0,Math.min(rect.bottom,viewportHeight) - Math.max(rect.top,0));\n  const visibleWidth = Math.max(0,Math.min(rect.right,viewportWidth) - Math.max(rect.left,0));\n\n  const visibleArea = visibleHeight * visibleWidth;\n  const totalArea = Math.max(1,rect.width * rect.height);\n\n  return visibleArea \/ totalArea;\n\n}\n\nfunction olsHandleVisibilityRatio(ratio){\n\n  if(ratio >= 0.7){\n\n    olsAnimationIsVisibleEnough = true;\n\n    if(!olsAnimationHasStarted){\n\n      olsAnimationHasStarted = true;\n      olsAnimationPaused = false;\n\n      if(olsStage){\n        olsStage.classList.remove(\"ols-animation-paused\");\n      }\n\n      startVideoSection();\n\n    }else{\n\n      olsResumeAnimation();\n\n    }\n\n  }else{\n\n    olsAnimationIsVisibleEnough = false;\n    olsPauseAnimation();\n\n  }\n\n}\n\nfunction initialiseOlsVisibilityControlledAnimation(){\n\n  if(olsStage){\n    olsStage.classList.add(\"ols-animation-paused\");\n  }\n\n  const initialRatio = olsGetVisibleRatio(olsStage);\n  olsHandleVisibilityRatio(initialRatio);\n\n  if(\"IntersectionObserver\" in window && olsStage){\n\n    const observer = new IntersectionObserver((entries) => {\n\n      entries.forEach((entry) => {\n        olsHandleVisibilityRatio(entry.intersectionRatio);\n      });\n\n    },{\n      threshold:[0,0.25,0.5,0.69,0.7,0.85,1]\n    });\n\n    observer.observe(olsStage);\n\n  }else{\n\n    window.addEventListener(\"scroll\",() => {\n      olsHandleVisibilityRatio(olsGetVisibleRatio(olsStage));\n    },{passive:true});\n\n    window.addEventListener(\"resize\",() => {\n      olsHandleVisibilityRatio(olsGetVisibleRatio(olsStage));\n    });\n\n  }\n\n}\n\n\/* ============================================================\n   GLOBAL HELPERS\n============================================================ *\/\n\nfunction typeWriter(target,text,speed,callback){\n\n  let i = 0;\n\n  function typing(){\n\n    if(i < text.length){\n\n      const char = text.charAt(i);\n      target.textContent += char;\n      i++;\n\n      let delay = speed;\n\n      if(char === \".\") delay = speed * 5;\n      if(char === \",\") delay = speed * 2.5;\n      if(char === \"\\n\") delay = speed * 4;\n\n      setTimeout(typing,delay);\n\n    }else{\n\n      if(callback){\n        callback();\n      }\n\n    }\n\n  }\n\n  typing();\n\n}\n\nfunction switchScene(currentScene,nextScene,callback){\n\n  currentScene.classList.add(\"fade-out\");\n\n  setTimeout(() => {\n\n    currentScene.classList.remove(\"active\");\n    currentScene.classList.remove(\"fade-out\");\n\n    nextScene.classList.add(\"active\");\n\n    if(callback){\n      callback();\n    }\n\n  },850);\n\n}\n\nfunction fitAllScreens(){\n\n  fitVideoScreen();\n  fitMcqScreen();\n  fitSaqScreen();\n\n}\n\nwindow.addEventListener(\"resize\",fitAllScreens);\nwindow.addEventListener(\"orientationchange\",fitAllScreens);\n\n\/* ============================================================\n   RESPONSIVE FITTING\n============================================================ *\/\n\nfunction fitVideoScreen(){\n\n  const baseWidth = 1180;\n  const baseHeight = 664;\n\n  const safePadding = 24;\n\n  const availableWidth = window.innerWidth - safePadding;\n  const availableHeight = window.innerHeight - safePadding;\n\n  const scaleByWidth = availableWidth \/ baseWidth;\n  const scaleByHeight = availableHeight \/ baseHeight;\n\n  const finalScale = Math.min(scaleByWidth,scaleByHeight,1);\n\n  document.documentElement.style.setProperty(\"--ols-video-screen-scale\",finalScale.toFixed(4));\n\n}\n\nfunction fitMcqScreen(){\n\n  const baseWidth = 1360;\n  const baseHeight = 1130;\n\n  const safePadding = 24;\n\n  const availableWidth = window.innerWidth - safePadding;\n  const availableHeight = window.innerHeight - safePadding;\n\n  const scaleByWidth = availableWidth \/ baseWidth;\n  const scaleByHeight = availableHeight \/ baseHeight;\n\n  const finalScale = Math.min(scaleByWidth,scaleByHeight,1);\n\n  document.documentElement.style.setProperty(\"--ols-mcq-screen-scale\",finalScale.toFixed(4));\n\n}\n\nfunction fitSaqScreen(){\n\n  const baseWidth = 1360;\n  const baseHeight = 965;\n\n  const safePadding = 24;\n\n  const availableWidth = window.innerWidth - safePadding;\n  const availableHeight = window.innerHeight - safePadding;\n\n  const scaleByWidth = availableWidth \/ baseWidth;\n  const scaleByHeight = availableHeight \/ baseHeight;\n\n  const finalScale = Math.min(scaleByWidth,scaleByHeight,1);\n\n  document.documentElement.style.setProperty(\"--ols-saq-screen-scale\",finalScale.toFixed(4));\n\n}\n\nfitAllScreens();\n\n\/* ============================================================\n   SCENE ELEMENTS\n============================================================ *\/\n\nconst sceneVideo =\ndocument.getElementById(\"sceneVideo\");\n\nconst sceneMcq =\ndocument.getElementById(\"sceneMcq\");\n\nconst sceneSaq =\ndocument.getElementById(\"sceneSaq\");\n\n\/* ============================================================\n   1. VIRTUAL LESSON PROMO\n============================================================ *\/\n\nconst videoTitle =\n\"Online Chemistry Lessons\";\n\nconst videoTitleText =\ndocument.getElementById(\"videoTitleText\");\n\nconst videoTitleCursor =\ndocument.getElementById(\"videoTitleCursor\");\n\nconst videoTitleScreen =\ndocument.getElementById(\"videoTitleScreen\");\n\nconst videoScene =\ndocument.getElementById(\"videoScene\");\n\nconst lessonVideo =\ndocument.getElementById(\"lessonVideo\");\n\nlet videoFallbackTimer = null;\nlet videoSceneComplete = false;\n\nfunction playLessonVideo(){\n\n  lessonVideo.muted = true;\n  lessonVideo.currentTime = 0;\n\n  const playPromise = lessonVideo.play();\n\n  if(playPromise !== undefined){\n\n    playPromise.catch(() => {\n\n      lessonVideo.muted = true;\n      lessonVideo.play();\n\n    });\n\n  }\n\n}\n\nfunction completeVideoScene(){\n\n  if(videoSceneComplete){\n    return;\n  }\n\n  videoSceneComplete = true;\n\n  if(videoFallbackTimer){\n    clearTimeout(videoFallbackTimer);\n  }\n\n  lessonVideo.pause();\n\n  setTimeout(() => {\n\n    switchScene(sceneVideo,sceneMcq,() => {\n      startMcqIntro();\n    });\n\n  },1400);\n\n}\n\nlessonVideo.addEventListener(\"ended\",() => {\n\n  lessonVideo.pause();\n  completeVideoScene();\n\n});\n\nfunction startVideoSection(){\n\n  fitVideoScreen();\n\n  setTimeout(() => {\n\n    typeWriter(videoTitleText,videoTitle,44,() => {\n\n      setTimeout(() => {\n\n        videoTitleCursor.style.display = \"none\";\n\n        setTimeout(() => {\n\n          videoTitleScreen.classList.add(\"hide\");\n\n          setTimeout(() => {\n\n            videoScene.classList.add(\"show\");\n\n            setTimeout(() => {\n\n              playLessonVideo();\n\n              videoFallbackTimer = setTimeout(() => {\n                completeVideoScene();\n              },45000);\n\n            },600);\n\n          },850);\n\n        },3000);\n\n      },250);\n\n    });\n\n  },700);\n\n}\n\n\/* ============================================================\n   2. MULTIPLE CHOICE FEEDBACK\n============================================================ *\/\n\nconst mcqIntroTitle =\n\"Multiple Choice Question Bank\";\n\nconst mcqSpecificFeedbackText =\n\"Na\u207a is small, but Cl\u207b is larger than F\u207b, so the ionic bonding is weaker than in NaF.\";\n\nconst mcqGeneralFeedbackText =\n\"Your answer is incorrect.\\n\\n\" +\n\"To determine which compound has the strongest ionic bonding, recall the key principle:\\n\\n\" +\n\"\u2022 Ionic bond strength increases when ionic radii are small, because the ions can get closer together.\\n\" +\n\"\u2022 Smaller ions \u2192 stronger electrostatic attraction \u2192 stronger ionic lattice.\\n\" +\n\"\u2022 Na\u207a (0.102 nm) is smaller than K\u207a (0.138 nm).\\n\" +\n\"\u2022 F\u207b (0.133 nm) is smaller than Cl\u207b (0.180 nm).\\n\\n\" +\n\"Therefore, the strongest ionic bonding occurs in the compound formed by the smallest cation and the smallest anion \u2192 sodium fluoride (NaF).\\n\\n\" +\n\"The correct answer is: sodium fluoride\";\n\nconst mcqIntroScreen =\ndocument.getElementById(\"mcqIntroScreen\");\n\nconst mcqIntroTitleText =\ndocument.getElementById(\"mcqIntroTitleText\");\n\nconst mcqIntroTitleCursor =\ndocument.getElementById(\"mcqIntroTitleCursor\");\n\nconst mcqScreen =\ndocument.getElementById(\"mcqScreen\");\n\nconst mcqWrongOption =\ndocument.getElementById(\"mcqWrongOption\");\n\nconst mcqSubmitButton =\ndocument.getElementById(\"mcqSubmitButton\");\n\nconst mcqSpecificFeedback =\ndocument.getElementById(\"mcqSpecificFeedback\");\n\nconst mcqCrossIcon =\ndocument.getElementById(\"mcqCrossIcon\");\n\nconst mcqSpecificText =\ndocument.getElementById(\"mcqSpecificText\");\n\nconst mcqSpecificCursor =\ndocument.getElementById(\"mcqSpecificCursor\");\n\nconst mcqGeneralFeedback =\ndocument.getElementById(\"mcqGeneralFeedback\");\n\nconst mcqGeneralText =\ndocument.getElementById(\"mcqGeneralText\");\n\nconst mcqGeneralCursor =\ndocument.getElementById(\"mcqGeneralCursor\");\n\nfunction selectMcqWrongOption(){\n\n  mcqWrongOption.classList.add(\"clicking\");\n\n  setTimeout(() => {\n    mcqWrongOption.classList.add(\"selected\");\n  },220);\n\n  setTimeout(() => {\n    mcqWrongOption.classList.remove(\"clicking\");\n  },850);\n\n}\n\nfunction clickMcqSubmit(){\n\n  mcqSubmitButton.classList.add(\"clicked\");\n\n  setTimeout(() => {\n    mcqSubmitButton.classList.remove(\"clicked\");\n  },240);\n\n}\n\nfunction showMcqSpecificFeedback(){\n\n  mcqSpecificFeedback.classList.add(\"show\");\n\n  setTimeout(() => {\n    mcqCrossIcon.classList.add(\"show\");\n  },180);\n\n  setTimeout(() => {\n\n    mcqSpecificCursor.style.display = \"inline-block\";\n\n    typeWriter(mcqSpecificText,mcqSpecificFeedbackText,12,() => {\n\n      mcqSpecificCursor.style.display = \"none\";\n\n      setTimeout(() => {\n        showMcqGeneralFeedback();\n      },650);\n\n    });\n\n  },560);\n\n}\n\nfunction showMcqGeneralFeedback(){\n\n  mcqGeneralFeedback.classList.add(\"show\");\n\n  setTimeout(() => {\n\n    mcqGeneralCursor.style.display = \"inline-block\";\n\n    typeWriter(mcqGeneralText,mcqGeneralFeedbackText,8,() => {\n\n      mcqGeneralCursor.style.display = \"none\";\n\n      setTimeout(() => {\n\n        switchScene(sceneMcq,sceneSaq,() => {\n          startSaqIntro();\n        });\n\n      },2600);\n\n    });\n\n  },600);\n\n}\n\nfunction startMcqAnimation(){\n\n  fitMcqScreen();\n\n  mcqScreen.classList.add(\"show\");\n\n  setTimeout(() => {\n\n    selectMcqWrongOption();\n\n    setTimeout(() => {\n\n      clickMcqSubmit();\n\n      setTimeout(() => {\n\n        showMcqSpecificFeedback();\n\n      },620);\n\n    },1150);\n\n  },1300);\n\n}\n\nfunction startMcqIntro(){\n\n  fitMcqScreen();\n\n  setTimeout(() => {\n\n    typeWriter(mcqIntroTitleText,mcqIntroTitle,44,() => {\n\n      setTimeout(() => {\n\n        mcqIntroTitleCursor.style.display = \"none\";\n\n        setTimeout(() => {\n\n          mcqIntroScreen.classList.add(\"hide\");\n\n          setTimeout(() => {\n            startMcqAnimation();\n          },850);\n\n        },3000);\n\n      },250);\n\n    });\n\n  },700);\n\n}\n\n\/* ============================================================\n   3. SHORT ANSWER FEEDBACK\n============================================================ *\/\n\nconst saqIntroTitle =\n\"Chemistry Specialist\\nMarked Exam Feedback\";\n\nconst saqStudentAnswer =\n\"Magnesium has stronger metallic bonding because it has more atoms packed together and melts at a higher temperature than sodium.\";\n\nconst saqTeacherFeedbackText =\n\"Comment:\\n\" +\n\"This answer is not correct. Melting temperature is a result of bonding strength, not the cause of it.\\n\\n\" +\n\"In metallic bonding, positive metal ions are attracted to a sea of delocalised electrons. The strength of this attraction depends on the charge of the ions and the number of delocalised electrons.\\n\\n\" +\n\"Magnesium forms Mg\u00b2\u207a ions and contributes two delocalised electrons per atom, whereas sodium forms Na\u207a ions and contributes only one electron. This results in a stronger electrostatic attraction in magnesium. Additionally, Mg\u00b2\u207a ions have a higher charge density than Na\u207a ions, further strengthening the metallic bonding.\\n\\n\" +\n\"Next time, include:\\n\" +\n\"\u2022 Ion charge: magnesium forms Mg\u00b2\u207a, sodium forms Na\u207a \u2713\\n\" +\n\"\u2022 Delocalised electrons: magnesium provides more electrons to the sea \u2713\\n\" +\n\"\u2022 Charge density: smaller, more highly charged ions create stronger attraction \u2713\\n\\n\" +\n\"You were close. Focus on explaining bonding in terms of charge and electron density rather than physical properties like melting point.\";\n\nconst saqIntro =\ndocument.getElementById(\"saqIntro\");\n\nconst saqIntroTitleText =\ndocument.getElementById(\"saqIntroTitleText\");\n\nconst saqIntroTitleCursor =\ndocument.getElementById(\"saqIntroTitleCursor\");\n\nconst saqStudentText =\ndocument.getElementById(\"saqStudentText\");\n\nconst saqTeacherText =\ndocument.getElementById(\"saqTeacherText\");\n\nconst saqStudentCursor =\ndocument.getElementById(\"saqStudentCursor\");\n\nconst saqTeacherCursor =\ndocument.getElementById(\"saqTeacherCursor\");\n\nconst saqFeedbackBox =\ndocument.getElementById(\"saqTeacherFeedback\");\n\nconst saqScreen =\ndocument.getElementById(\"saqScreen\");\n\nfunction startSaqFeedbackAnimation(){\n\n  fitSaqScreen();\n\n  saqScreen.classList.add(\"show\");\n\n  setTimeout(() => {\n\n    typeWriter(saqStudentText,saqStudentAnswer,27,() => {\n\n      saqStudentCursor.style.display = \"none\";\n\n      setTimeout(() => {\n\n        saqFeedbackBox.classList.add(\"show\");\n        saqTeacherCursor.style.display = \"inline-block\";\n\n        typeWriter(saqTeacherText,saqTeacherFeedbackText,10,() => {\n\n          saqTeacherCursor.style.display = \"none\";\n\n        });\n\n      },650);\n\n    });\n\n  },850);\n\n}\n\nfunction startSaqIntro(){\n\n  fitSaqScreen();\n\n  setTimeout(() => {\n\n    typeWriter(saqIntroTitleText,saqIntroTitle,44,() => {\n\n      setTimeout(() => {\n\n        saqIntroTitleCursor.style.display = \"none\";\n\n        setTimeout(() => {\n\n          saqIntro.classList.add(\"hide\");\n\n          setTimeout(() => {\n\n            startSaqFeedbackAnimation();\n\n          },850);\n\n        },3000);\n\n      },250);\n\n    });\n\n  },700);\n\n}\n\n\/* ============================================================\n   START\n============================================================ *\/\n\ninitialiseOlsVisibilityControlledAnimation();\n<\/script>\n\n<\/body>\n<\/html>\n        <\/template>\n      \n        <script>\n          (function(){\n            var startButton = document.getElementById(\"olsCourseAnimationStart002\");\n            var pauseButton = document.getElementById(\"olsCourseAnimationPause002\");\n            var iframe = document.getElementById(\"olsCourseAnimationFrame002\");\n            var template = document.getElementById(\"olsCourseAnimationTemplate002\");\n      \n            if (!startButton || !pauseButton || !iframe || !template) {\n              return;\n            }\n      \n            var olsAnimationPausedFromButton = false;\n      \n            startButton.addEventListener(\"click\", function(){\n              iframe.setAttribute(\"srcdoc\", template.innerHTML);\n              startButton.classList.add(\"is-hidden\");\n              pauseButton.classList.add(\"is-visible\");\n              pauseButton.textContent = \"Pause\";\n              pauseButton.setAttribute(\"aria-label\", \"Pause course preview animation\");\n              olsAnimationPausedFromButton = false;\n            });\n      \n            pauseButton.addEventListener(\"click\", function(){\n              if (!iframe.contentWindow) {\n                return;\n              }\n      \n              if (!olsAnimationPausedFromButton) {\n                if (typeof iframe.contentWindow.olsPauseAnimation === \"function\") {\n                  iframe.contentWindow.olsPauseAnimation();\n                }\n                olsAnimationPausedFromButton = true;\n                pauseButton.textContent = \"Resume\";\n                pauseButton.setAttribute(\"aria-label\", \"Resume course preview animation\");\n              } else {\n                if (typeof iframe.contentWindow.olsResumeAnimation === \"function\") {\n                  iframe.contentWindow.olsResumeAnimation();\n                }\n                olsAnimationPausedFromButton = false;\n                pauseButton.textContent = \"Pause\";\n                pauseButton.setAttribute(\"aria-label\", \"Pause course preview animation\");\n              }\n            });\n          })();\n        <\/script>\n      <\/section>\n\n      <section class=\"ols-faq-card\">\n        <h2>The Mass Spectrometer FAQs<\/h2>\n        <p>Use these quick answers to secure the key wording for Edexcel A Level Chemistry.<\/p>\n        <div class=\"ols-faq-list\">\n          <div class=\"ols-faq-item\"><h3>What does a mass spectrometer measure?<\/h3><p>It separates and detects positive ions according to their mass-to-charge ratio, m\/z.<\/p><\/div>\n          <div class=\"ols-faq-item\"><h3>Why must the sample be vaporised?<\/h3><p>The sample must be in the gaseous state so that its particles can move through the instrument and be ionised.<\/p><\/div>\n          <div class=\"ols-faq-item\"><h3>How are positive ions formed in electron bombardment?<\/h3><p>High-energy electrons collide with gaseous atoms or molecules and remove electrons, producing positive ions.<\/p><\/div>\n          <div class=\"ols-faq-item\"><h3>Why is a vacuum needed in a mass spectrometer?<\/h3><p>A vacuum prevents collisions with air particles and prevents air particles from becoming ionised and detected.<\/p><\/div>\n          <div class=\"ols-faq-item\"><h3>What determines the amount of deflection?<\/h3><p>The amount of deflection depends on m\/z. Ions with smaller m\/z values are deflected more.<\/p><\/div>\n          <div class=\"ols-faq-item\"><h3>What does the detector signal show?<\/h3><p>The detector signal is a small current. Its size is proportional to the abundance of ions reaching the detector.<\/p><\/div>\n        <\/div>\n      <\/section>\n\n      <section class=\"ols-related-card\">\n        <h2>Related Topics<\/h2>\n        <p>Continue with the linked Topic 1 revision pages to connect mass spectrometry with isotopes, relative atomic mass and ionisation energy.<\/p>\n        <div class=\"ols-related-grid\">\n          <a class=\"ols-related-item\" href=\"https:\/\/www.onlinelearningsystem.net\/xyz\/revision-notes\/a-level-chemistry\/edexcel\/topic-1-atomic-structure-and-the-periodic-table\/mass-spectrometry\/ram-calculations\/\">RAM Calculations<\/a>\n          <a class=\"ols-related-item\" href=\"https:\/\/www.onlinelearningsystem.net\/xyz\/revision-notes\/a-level-chemistry\/edexcel\/topic-1-atomic-structure-and-the-periodic-table\/mass-spectrometry\/predicting-diatomic-mass-spectra\/\">Predicting Diatomic Mass Spectra<\/a>\n          <a class=\"ols-related-item\" href=\"https:\/\/www.onlinelearningsystem.net\/xyz\/revision-notes\/a-level-chemistry\/edexcel\/topic-1-atomic-structure-and-the-periodic-table\/ionisation-energy\/\">Ionisation Energy<\/a>\n        <\/div>\n      <\/section>\n    <!-- OLS Author Copyright Footprint \/ Attribution Card -->\n      <section class=\"ols-attribution-card\">\n        <style>\n          .ols-attribution-card {\n            background: linear-gradient(135deg, #ffffff, #f8fbff);\n            border: 1px solid rgba(28, 36, 75, 0.14);\n            border-radius: 28px;\n            box-shadow: 0 18px 45px rgba(28, 36, 75, 0.10);\n            padding: 34px;\n            margin-bottom: 24px;\n            overflow: hidden;\n            font-family: Poppins, Arial, sans-serif;\n            box-sizing: border-box;\n          }\n\n          .ols-attribution-card,\n          .ols-attribution-card * {\n            box-sizing: border-box;\n          }\n\n          .ols-attribution-card p {\n            margin: 0;\n            font-size: 14px;\n            line-height: 1.65;\n            font-weight: 300;\n            color: #667085;\n          }\n\n          .ols-attribution-card strong {\n            font-weight: 700;\n            color: #1C244B;\n          }\n\n          @media (max-width: 760px) {\n            .ols-attribution-card {\n              padding: 24px 18px;\n              border-radius: 22px;\n            }\n          }\n        <\/style>\n\n        <p><strong>Copyright notice:<\/strong> This OLS revision content, including the explanations, layout, diagrams, tables and embedded learning structure, is authored for Online Learning System by Dr. Mohammed Al-Fatah. It may not be copied, reproduced, redistributed or adapted without written permission.<\/p>\n      <\/section>\n    <\/main>\n\n\n<script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"WebPage\",\n      \"@id\": \"https:\/\/www.onlinelearningsystem.net\/xyz\/revision-notes\/a-level-chemistry\/edexcel\/topic-1-atomic-structure-and-the-periodic-table\/mass-spectrometry\/the-mass-spectrometer\/#webpage\",\n      \"url\": \"https:\/\/www.onlinelearningsystem.net\/xyz\/revision-notes\/a-level-chemistry\/edexcel\/topic-1-atomic-structure-and-the-periodic-table\/mass-spectrometry\/the-mass-spectrometer\/\",\n      \"name\": \"The Mass Spectrometer - Edexcel A Level Chemistry\",\n      \"description\": \"Free OLS revision notes explaining how a mass spectrometer works for Edexcel A Level Chemistry, including vaporisation, ionisation, acceleration, deflection, detection, m\/z and relative abundance.\",\n      \"isPartOf\": {\n        \"@type\": \"WebSite\",\n        \"name\": \"Online Learning System\",\n        \"url\": \"https:\/\/www.onlinelearningsystem.net\/xyz\/\"\n      },\n      \"about\": [\n        { \"@type\": \"Thing\", \"name\": \"Mass spectrometry\" },\n        { \"@type\": \"Thing\", \"name\": \"Mass spectrometer\" },\n        { \"@type\": \"Thing\", \"name\": \"Electron bombardment\" },\n        { \"@type\": \"Thing\", \"name\": \"Mass-to-charge ratio\" },\n        { \"@type\": \"Thing\", \"name\": \"Relative abundance\" }\n      ],\n      \"author\": {\n        \"@type\": \"Person\",\n        \"name\": \"Dr. Mohammed Al-Fatah\",\n        \"url\": \"https:\/\/www.linkedin.com\/in\/doctormohammedfatah\/\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"Online Learning System\",\n        \"url\": \"https:\/\/www.onlinelearningsystem.net\/xyz\/\"\n      },\n      \"primaryImageOfPage\": {\n        \"@type\": \"ImageObject\",\n        \"url\": \"https:\/\/www.onlinelearningsystem.net\/xyz\/wp-content\/uploads\/2026\/05\/The-mass-spectrometer-explained.webp\",\n        \"name\": \"The mass spectrometer explained\"\n      }\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"@id\": \"https:\/\/www.onlinelearningsystem.net\/xyz\/revision-notes\/a-level-chemistry\/edexcel\/topic-1-atomic-structure-and-the-periodic-table\/mass-spectrometry\/the-mass-spectrometer\/#breadcrumb\",\n      \"itemListElement\": [\n        { \"@type\": \"ListItem\", \"position\": 1, \"name\": \"Revision Notes\", \"item\": \"https:\/\/www.onlinelearningsystem.net\/xyz\/revision-notes\/\" },\n        { \"@type\": \"ListItem\", \"position\": 2, \"name\": \"A Level Chemistry\", \"item\": \"https:\/\/www.onlinelearningsystem.net\/xyz\/revision-notes\/a-level-chemistry\/\" },\n        { \"@type\": \"ListItem\", \"position\": 3, \"name\": \"Edexcel\", \"item\": \"https:\/\/www.onlinelearningsystem.net\/xyz\/revision-notes\/a-level-chemistry\/edexcel\/\" },\n        { \"@type\": \"ListItem\", \"position\": 4, \"name\": \"Topic 1 Atomic Structure and The Periodic Table\", \"item\": \"https:\/\/www.onlinelearningsystem.net\/xyz\/revision-notes\/a-level-chemistry\/edexcel\/topic-1-atomic-structure-and-the-periodic-table\/\" },\n        { \"@type\": \"ListItem\", \"position\": 5, \"name\": \"Mass Spectrometry\", \"item\": \"https:\/\/www.onlinelearningsystem.net\/xyz\/revision-notes\/a-level-chemistry\/edexcel\/topic-1-atomic-structure-and-the-periodic-table\/mass-spectrometry\/\" },\n        { \"@type\": \"ListItem\", \"position\": 6, \"name\": \"The Mass Spectrometer\", \"item\": \"https:\/\/www.onlinelearningsystem.net\/xyz\/revision-notes\/a-level-chemistry\/edexcel\/topic-1-atomic-structure-and-the-periodic-table\/mass-spectrometry\/the-mass-spectrometer\/\" }\n      ]\n    },\n    {\n      \"@type\": \"Course\",\n      \"@id\": \"https:\/\/www.onlinelearningsystem.net\/xyz\/revision-notes\/a-level-chemistry\/edexcel\/topic-1-atomic-structure-and-the-periodic-table\/mass-spectrometry\/the-mass-spectrometer\/#course\",\n      \"name\": \"The Mass Spectrometer - Edexcel A Level Chemistry\",\n      \"description\": \"Free OLS revision notes for Edexcel A Level Chemistry covering the stages of a mass spectrometer: vaporisation, ionisation by electron bombardment, acceleration, deflection, detection, m\/z and relative abundance.\",\n      \"provider\": {\n        \"@type\": \"Organization\",\n        \"name\": \"Online Learning System\",\n        \"sameAs\": \"https:\/\/www.onlinelearningsystem.net\/xyz\/\"\n      },\n      \"educationalLevel\": \"A Level\",\n      \"teaches\": [\n        \"Mass spectrometry\",\n        \"Electron bombardment ionisation\",\n        \"Acceleration of positive ions\",\n        \"Magnetic deflection by m\/z\",\n        \"Detector current and relative abundance\"\n      ],\n      \"url\": \"https:\/\/www.onlinelearningsystem.net\/xyz\/revision-notes\/a-level-chemistry\/edexcel\/topic-1-atomic-structure-and-the-periodic-table\/mass-spectrometry\/the-mass-spectrometer\/\"\n    },\n    {\n      \"@type\": \"FAQPage\",\n      \"@id\": \"https:\/\/www.onlinelearningsystem.net\/xyz\/revision-notes\/a-level-chemistry\/edexcel\/topic-1-atomic-structure-and-the-periodic-table\/mass-spectrometry\/the-mass-spectrometer\/#faq\",\n      \"mainEntity\": [\n        { \"@type\": \"Question\", \"name\": \"What does a mass spectrometer measure?\", \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"A mass spectrometer separates and detects positive ions according to their mass-to-charge ratio, m\/z.\" } },\n        { \"@type\": \"Question\", \"name\": \"Why must the sample be vaporised?\", \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"The sample must be in the gaseous state so that its particles can move through the instrument and be ionised.\" } },\n        { \"@type\": \"Question\", \"name\": \"How are positive ions formed in electron bombardment?\", \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"High-energy electrons collide with gaseous atoms or molecules and remove electrons, producing positive ions.\" } },\n        { \"@type\": \"Question\", \"name\": \"Why is a vacuum needed in a mass spectrometer?\", \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"A vacuum prevents collisions with air particles and prevents air particles from becoming ionised and detected.\" } },\n        { \"@type\": \"Question\", \"name\": \"What determines the amount of deflection?\", \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"The amount of deflection depends on the mass-to-charge ratio, m\/z. Ions with smaller m\/z values are deflected more.\" } },\n        { \"@type\": \"Question\", \"name\": \"What does the detector signal show?\", \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"The detector signal is a small current. Its size is proportional to the abundance of ions reaching the detector.\" } }\n      ]\n    }\n  ]\n}\n<\/script>\n<\/section>\n","protected":false},"excerpt":{"rendered":"<p>Revision Notes \/ A Level Chemistry \/ Edexcel \/ Topic 1 Atomic Structure &amp; The Periodic Table \/ Mass Spectrometry \/ The Mass Spectrometer The Mass Spectrometer A concise revision guide to how a mass spectrometer works, including vaporisation, ionisation by electron bombardment, acceleration, deflection, detection and the interpretation of m\/z values. Unit: Paper 1 [&hellip;]<\/p>\n","protected":false},"author":12,"featured_media":0,"parent":4514,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"productId":0,"courseId":0,"footnotes":""},"class_list":["post-4518","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.onlinelearningsystem.net\/xyz\/wp-json\/wp\/v2\/pages\/4518","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.onlinelearningsystem.net\/xyz\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.onlinelearningsystem.net\/xyz\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.onlinelearningsystem.net\/xyz\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/www.onlinelearningsystem.net\/xyz\/wp-json\/wp\/v2\/comments?post=4518"}],"version-history":[{"count":0,"href":"https:\/\/www.onlinelearningsystem.net\/xyz\/wp-json\/wp\/v2\/pages\/4518\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/www.onlinelearningsystem.net\/xyz\/wp-json\/wp\/v2\/pages\/4514"}],"wp:attachment":[{"href":"https:\/\/www.onlinelearningsystem.net\/xyz\/wp-json\/wp\/v2\/media?parent=4518"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}