{"id":1368,"date":"2026-06-20T00:47:03","date_gmt":"2026-06-19T23:47:03","guid":{"rendered":"https:\/\/microregistrar.com\/?p=1368"},"modified":"2026-06-20T00:47:05","modified_gmt":"2026-06-19T23:47:05","slug":"smi-summary-actinomyces","status":"publish","type":"post","link":"https:\/\/microregistrar.com\/?p=1368","title":{"rendered":"SMI summary: Actinomyces"},"content":{"rendered":"\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>Actinomyces \u2014 Identification Trainer<\/title>\n<style>\n\n\/* ============ TOKENS ============ *\/\n:root{\n  --agar:#FAF6ED;\n  --agar-deep:#F0E8D6;\n  --ink:#1F3864;\n  --ink-soft:#3A5079;\n  --colony:#C68B3D;\n  --colony-deep:#A66F26;\n  --violet:#5B4B8A;\n  --violet-soft:#EDE8F7;\n  --sage:#5C8A6E;\n  --sage-soft:#E5F0E8;\n  --rust:#B5533C;\n  --rust-soft:#F7E8E3;\n  --paper:#FFFFFF;\n  --line:#DDD3BC;\n  --text:#2B2620;\n  --text-mute:#6B6356;\n  --shadow: 0 2px 10px rgba(31,56,100,0.08);\n  --shadow-lift: 0 8px 24px rgba(31,56,100,0.14);\n  --radius: 14px;\n  --serif: \"Iowan Old Style\",\"Palatino Linotype\",Palatino,Georgia,serif;\n  --mono: \"JetBrains Mono\",\"SF Mono\",Menlo,Consolas,monospace;\n  --sans: -apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif;\n}\n\n*{box-sizing:border-box;}\nhtml,body{margin:0;padding:0;}\nbody{\n  background:var(--agar);\n  background-image:\n    radial-gradient(circle at 8% 12%, rgba(198,139,61,0.06) 0, transparent 45%),\n    radial-gradient(circle at 92% 85%, rgba(91,75,138,0.06) 0, transparent 45%);\n  color:var(--text);\n  font-family:var(--sans);\n  line-height:1.5;\n  -webkit-font-smoothing:antialiased;\n  padding-bottom:80px;\n}\n\n::selection{background:var(--colony); color:#fff;}\n\nbutton{font-family:inherit; cursor:pointer;}\n:focus-visible{outline:3px solid var(--violet); outline-offset:2px; border-radius:6px;}\n\n\/* ============ LAYOUT ============ *\/\n.wrap{max-width:920px; margin:0 auto; padding:0 20px;}\n\nheader.hero{\n  padding:48px 0 28px;\n  border-bottom:1px solid var(--line);\n  margin-bottom:8px;\n}\n.eyebrow{\n  font-family:var(--mono);\n  font-size:12px;\n  letter-spacing:0.14em;\n  text-transform:uppercase;\n  color:var(--colony-deep);\n  font-weight:600;\n  display:flex;\n  align-items:center;\n  gap:8px;\n}\n.eyebrow .dot{width:7px; height:7px; border-radius:50%; background:var(--colony-deep); display:inline-block;}\nh1.title{\n  font-family:var(--serif);\n  font-size:42px;\n  font-weight:600;\n  color:var(--ink);\n  margin:10px 0 6px;\n  letter-spacing:-0.01em;\n}\nh1.title em{color:var(--violet); font-style:italic;}\n.subtitle{\n  font-size:16px;\n  color:var(--text-mute);\n  max-width:560px;\n  margin-bottom:18px;\n}\n.progress-row{\n  display:flex; align-items:center; gap:14px; flex-wrap:wrap;\n}\n.progress-bar-outer{\n  flex:1; min-width:160px; height:8px; background:var(--agar-deep);\n  border-radius:5px; overflow:hidden; border:1px solid var(--line);\n}\n.progress-bar-inner{\n  height:100%; width:0%; background:linear-gradient(90deg,var(--colony),var(--sage));\n  transition:width .5s ease;\n}\n.progress-label{font-family:var(--mono); font-size:12px; color:var(--text-mute); white-space:nowrap;}\n\n\/* ============ NAV ============ *\/\nnav.tabs{\n  display:flex; gap:6px; flex-wrap:wrap;\n  margin:24px 0 28px;\n  padding:6px;\n  background:var(--paper);\n  border:1px solid var(--line);\n  border-radius:12px;\n  box-shadow:var(--shadow);\n  position:sticky; top:12px; z-index:50;\n}\n.tab-btn{\n  flex:1 1 auto;\n  min-width:90px;\n  background:transparent;\n  border:none;\n  padding:10px 12px;\n  font-size:13px;\n  font-weight:600;\n  color:var(--text-mute);\n  border-radius:8px;\n  transition:background .2s, color .2s;\n  text-align:center;\n}\n.tab-btn:hover{background:var(--agar-deep); color:var(--ink);}\n.tab-btn.active{background:var(--ink); color:#fff;}\n\nsection.panel{display:none; animation:fadein .35s ease;}\nsection.panel.active{display:block;}\n@keyframes fadein{from{opacity:0; transform:translateY(6px);} to{opacity:1; transform:none;}}\n\n.card-block{\n  background:var(--paper);\n  border:1px solid var(--line);\n  border-radius:var(--radius);\n  padding:26px 28px;\n  margin-bottom:20px;\n  box-shadow:var(--shadow);\n}\n.card-block h2{\n  font-family:var(--serif);\n  color:var(--ink);\n  font-size:23px;\n  margin:0 0 14px;\n  display:flex; align-items:center; gap:10px;\n}\n.card-block h2 .tag{\n  font-family:var(--mono); font-size:11px; background:var(--violet-soft); color:var(--violet);\n  padding:3px 8px; border-radius:6px; letter-spacing:0.04em;\n}\np.lead{color:var(--text-mute); font-size:14.5px; margin-top:-6px; margin-bottom:16px;}\n\n\/* ============ GENERIC PILL \/ BADGE ============ *\/\n.pill{\n  display:inline-block; font-family:var(--mono); font-size:11px; font-weight:600;\n  padding:3px 9px; border-radius:20px; letter-spacing:0.03em;\n}\n.pill.gold{background:#F3E3C8; color:var(--colony-deep);}\n.pill.violet{background:var(--violet-soft); color:var(--violet);}\n.pill.sage{background:var(--sage-soft); color:var(--sage);}\n.pill.rust{background:var(--rust-soft); color:var(--rust);}\n\n\/* ============ FLASHCARDS ============ *\/\n.deck-controls{display:flex; justify-content:space-between; align-items:center; margin-bottom:14px; flex-wrap:wrap; gap:10px;}\n.deck-count{font-family:var(--mono); font-size:12px; color:var(--text-mute);}\n.flash-stage{\n  perspective:1400px;\n  height:230px;\n  margin-bottom:18px;\n}\n.flashcard{\n  position:relative; width:100%; height:100%;\n  transform-style:preserve-3d;\n  transition:transform .5s cubic-bezier(.4,.2,.2,1);\n  cursor:pointer;\n}\n.flashcard.flipped{transform:rotateY(180deg);}\n.face{\n  position:absolute; inset:0;\n  backface-visibility:hidden;\n  border-radius:var(--radius);\n  border:1.5px solid var(--line);\n  padding:24px 26px;\n  display:flex; flex-direction:column; justify-content:center;\n  box-shadow:var(--shadow);\n}\n.face.front{background:var(--paper);}\n.face.back{\n  background:var(--ink);\n  color:#fff;\n  transform:rotateY(180deg);\n  border-color:var(--ink);\n}\n.face .kicker{font-family:var(--mono); font-size:11px; text-transform:uppercase; letter-spacing:.08em; opacity:.6; margin-bottom:10px;}\n.face .q-text{font-family:var(--serif); font-size:21px; line-height:1.35; color:var(--ink);}\n.face.back .q-text{color:#fff;}\n.face .a-text{font-size:16px; line-height:1.5;}\n.face .hint{position:absolute; bottom:14px; right:18px; font-size:11px; opacity:.5; font-family:var(--mono);}\n\n.deck-nav{display:flex; gap:10px; justify-content:center; flex-wrap:wrap;}\n.btn{\n  border:1.5px solid var(--ink); background:var(--paper); color:var(--ink);\n  padding:10px 18px; border-radius:9px; font-weight:600; font-size:13.5px;\n  transition:background .15s, color .15s, transform .1s;\n  display:inline-flex; align-items:center; gap:6px;\n}\n.btn:hover{background:var(--ink); color:#fff;}\n.btn:active{transform:scale(.97);}\n.btn.primary{background:var(--ink); color:#fff;}\n.btn.primary:hover{background:var(--ink-soft);}\n.btn.ghost{border-color:var(--line); color:var(--text-mute);}\n.btn.ghost:hover{background:var(--agar-deep); color:var(--text); border-color:var(--line);}\n.btn.know{border-color:var(--sage); color:var(--sage);}\n.btn.know:hover{background:var(--sage); color:#fff;}\n.btn.dontknow{border-color:var(--rust); color:var(--rust);}\n.btn.dontknow:hover{background:var(--rust); color:#fff;}\n.btn:disabled{opacity:.35; cursor:not-allowed; pointer-events:none;}\n\n\/* ============ GENERALISATION CALLOUT ============ *\/\n.generalise-box{\n  background:var(--sage-soft);\n  border:1.5px dashed var(--sage);\n  border-radius:12px;\n  padding:18px 20px;\n  margin-bottom:16px;\n}\n.generalise-box .label{\n  font-family:var(--mono); font-size:11px; font-weight:700; color:var(--sage);\n  text-transform:uppercase; letter-spacing:.06em; margin-bottom:6px; display:block;\n}\n.exception-box{\n  background:var(--rust-soft);\n  border:1.5px dashed var(--rust);\n  border-radius:12px;\n  padding:18px 20px;\n  margin-bottom:16px;\n}\n.exception-box .label{\n  font-family:var(--mono); font-size:11px; font-weight:700; color:var(--rust);\n  text-transform:uppercase; letter-spacing:.06em; margin-bottom:6px; display:block;\n}\n\n\/* ============ COLONY GALLERY ============ *\/\n.colony-grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:14px; margin:16px 0;}\n.colony-card{\n  border:1.5px solid var(--line); border-radius:12px; padding:14px; text-align:center;\n  background:var(--paper); cursor:pointer; transition:transform .15s, box-shadow .15s;\n  position:relative;\n}\n.colony-card:hover{transform:translateY(-3px); box-shadow:var(--shadow-lift);}\n.petri{\n  width:84px; height:84px; border-radius:50%; margin:0 auto 10px;\n  border:3px solid #d8cdb0; position:relative; overflow:hidden;\n  box-shadow:inset 0 2px 8px rgba(0,0,0,.08);\n}\n.colony-card .sp-name{font-family:var(--serif); font-style:italic; font-size:13.5px; color:var(--ink); font-weight:600;}\n.colony-card .sp-detail{font-size:11.5px; color:var(--text-mute); margin-top:6px; display:none;}\n.colony-card.revealed .sp-detail{display:block;}\n.colony-card .reveal-hint{font-size:10px; color:var(--colony-deep); font-family:var(--mono); margin-top:6px;}\n.colony-card.revealed .reveal-hint{display:none;}\n\n\/* breadcrumb texture *\/\n.petri.breadcrumb{background:radial-gradient(circle at 50% 45%, #fdf9ee 0%, #efe6cd 55%, #e2d6b3 100%);}\n.petri.breadcrumb::after{\n  content:\"\"; position:absolute; inset:18% 20%; border-radius:40%;\n  background:\n    radial-gradient(circle at 30% 30%, #fff 0 6px, transparent 7px),\n    radial-gradient(circle at 60% 25%, #fff 0 5px, transparent 6px),\n    radial-gradient(circle at 45% 55%, #fff 0 7px, transparent 8px),\n    radial-gradient(circle at 75% 60%, #fff 0 5px, transparent 6px),\n    radial-gradient(circle at 25% 70%, #fff 0 6px, transparent 7px),\n    radial-gradient(circle at 65% 80%, #fff 0 4px, transparent 5px);\n  filter:contrast(1.3);\n}\n.petri.smooth{background:radial-gradient(circle at 40% 35%, #fffdf6 0%, #f3ecd8 60%, #e6dcc0 100%);}\n.petri.pink{background:radial-gradient(circle at 40% 35%, #fbe3df 0%, #f0c9c2 60%, #e0aca3 100%);}\n.petri.grey{background:radial-gradient(circle at 40% 35%, #eef0ef 0%, #d6dad8 60%, #c2c7c4 100%);}\n.petri.fried{background:radial-gradient(circle at 50% 50%, #d8d3c6 0%, #d8d3c6 38%, #f7f2e2 40%, #f7f2e2 100%);}\n.petri.fried::after{content:\"\"; position:absolute; inset:30%; border-radius:50%; background:#f7f2e2; box-shadow:0 0 0 2px #cdc6b3;}\n\n\/* ============ FLOW DIAGRAM ============ *\/\n.flow{display:flex; flex-direction:column; align-items:center; gap:0; margin:10px 0 6px;}\n.flow-node{\n  background:var(--paper); border:1.5px solid var(--ink); border-radius:10px;\n  padding:12px 18px; text-align:center; font-size:13.5px; font-weight:600; color:var(--ink);\n  max-width:320px; cursor:pointer; transition:background .15s, box-shadow .15s;\n  position:relative;\n}\n.flow-node:hover{background:var(--violet-soft); box-shadow:var(--shadow-lift);}\n.flow-node.start, .flow-node.end{border-radius:30px; background:var(--ink); color:#fff;}\n.flow-node.end{background:var(--sage); border-color:var(--sage);}\n.flow-arrow{height:28px; width:2px; background:var(--line); position:relative;}\n.flow-arrow::after{\n  content:\"\"; position:absolute; bottom:-1px; left:50%; transform:translateX(-50%);\n  border:5px solid transparent; border-top-color:var(--line);\n}\n.flow-branch{display:flex; gap:18px; justify-content:center; flex-wrap:wrap; margin:0;}\n.flow-branch-col{display:flex; flex-direction:column; align-items:center; gap:0;}\n.flow-detail{\n  display:none; background:var(--violet-soft); border:1px solid var(--violet);\n  border-radius:8px; padding:10px 14px; font-size:12.5px; color:var(--violet); margin-top:8px;\n  max-width:300px; text-align:left; font-weight:500;\n}\n.flow-node.open .flow-detail{display:block;}\n\n\/* ============ SLIDER (Gram stain signature element) ============ *\/\n.gram-demo{\n  background:linear-gradient(160deg,#fff,var(--agar-deep));\n  border:1.5px solid var(--line); border-radius:16px; padding:26px;\n  display:flex; gap:28px; align-items:center; flex-wrap:wrap;\n}\n.gram-visual{flex:0 0 180px; display:flex; flex-direction:column; align-items:center; gap:10px;}\n.bacillus-row{display:flex; gap:5px; flex-wrap:wrap; justify-content:center; width:170px; height:90px; align-items:center;}\n.bacillus{\n  width:7px; height:34px; border-radius:4px;\n  transform:rotate(var(--rot,0deg));\n  transition:background .3s ease;\n}\n.gram-readout{font-family:var(--mono); font-size:13px; font-weight:700; text-align:center; padding:6px 12px; border-radius:8px; min-width:170px;}\n.gram-controls{flex:1; min-width:240px;}\n.gram-controls label{font-size:13px; font-weight:600; color:var(--ink); display:block; margin-bottom:8px;}\ninput[type=range]{width:100%; accent-color:var(--violet); margin-bottom:6px;}\n.gram-scale{display:flex; justify-content:space-between; font-size:11px; color:var(--text-mute); font-family:var(--mono);}\n.gram-explain{margin-top:14px; font-size:13.5px; color:var(--text); background:var(--paper); border:1px solid var(--line); border-radius:8px; padding:12px 14px;}\n\n\/* ============ QUIZ ============ *\/\n.quiz-progress{font-family:var(--mono); font-size:12px; color:var(--text-mute); margin-bottom:10px;}\n.quiz-q{font-family:var(--serif); font-size:20px; color:var(--ink); margin-bottom:18px; line-height:1.4;}\n.quiz-options{display:flex; flex-direction:column; gap:10px; margin-bottom:18px;}\n.opt-btn{\n  text-align:left; padding:13px 16px; border-radius:10px; border:1.5px solid var(--line);\n  background:var(--paper); font-size:14.5px; color:var(--text); transition:border-color .15s, background .15s;\n}\n.opt-btn:hover:not(:disabled){border-color:var(--violet); background:var(--violet-soft);}\n.opt-btn.correct{border-color:var(--sage); background:var(--sage-soft); color:var(--sage); font-weight:700;}\n.opt-btn.incorrect{border-color:var(--rust); background:var(--rust-soft); color:var(--rust); font-weight:700;}\n.opt-btn:disabled{cursor:default;}\n.quiz-feedback{\n  font-size:13.5px; padding:12px 14px; border-radius:8px; margin-bottom:14px; display:none;\n}\n.quiz-feedback.show{display:block;}\n.quiz-feedback.right{background:var(--sage-soft); color:var(--sage);}\n.quiz-feedback.wrong{background:var(--rust-soft); color:var(--rust);}\n.quiz-summary{text-align:center; padding:30px 10px;}\n.quiz-summary .big-score{font-family:var(--serif); font-size:52px; color:var(--ink); font-weight:700;}\n.quiz-summary .score-msg{color:var(--text-mute); margin:8px 0 20px; font-size:14.5px;}\n\n\/* ============ TABLE STYLE ============ *\/\ntable.clean{width:100%; border-collapse:collapse; margin:10px 0;}\ntable.clean th{\n  font-family:var(--mono); font-size:11px; text-transform:uppercase; letter-spacing:.04em;\n  text-align:left; padding:10px 12px; background:var(--ink); color:#fff; border-radius:6px 6px 0 0;\n}\ntable.clean td{padding:10px 12px; border-bottom:1px solid var(--line); font-size:13.5px;}\ntable.clean tr:last-child td{border-bottom:none;}\ntable.clean em{color:var(--violet);}\n\nfooter{\n  text-align:center; padding:30px 0 10px; color:var(--text-mute); font-size:12px; font-family:var(--mono);\n}\n\n@media (max-width:560px){\n  h1.title{font-size:30px;}\n  .card-block{padding:20px 18px;}\n  .flow-branch{gap:10px;}\n  .gram-demo{flex-direction:column;}\n}\n<\/style>\n<\/head>\n<body>\n\n<div class=\"wrap\">\n\n  <header class=\"hero\">\n    <div class=\"eyebrow\"><span class=\"dot\"><\/span> UK SMI ID 9 &middot; Trainer<\/div>\n    <h1 class=\"title\">Identification of <em>Actinomyces<\/em><\/h1>\n    <p class=\"subtitle\">An interactive drill, not a textbook. Built to make you <em>retrieve<\/em> the few facts that actually get tested, not re-read the whole table.<\/p>\n    <div class=\"progress-row\">\n      <div class=\"progress-bar-outer\"><div class=\"progress-bar-inner\" id=\"globalProgress\"><\/div><\/div>\n      <div class=\"progress-label\" id=\"globalProgressLabel\">0 of 0 cards seen<\/div>\n    <\/div>\n  <\/header>\n\n  <nav class=\"tabs\" id=\"tabs\">\n    <button class=\"tab-btn active\" data-tab=\"taxonomy\">Taxonomy<\/button>\n    <button class=\"tab-btn\" data-tab=\"workflow\">ID Workflow<\/button>\n    <button class=\"tab-btn\" data-tab=\"gram\">Gram Stain<\/button>\n    <button class=\"tab-btn\" data-tab=\"colonies\">Colonies<\/button>\n    <button class=\"tab-btn\" data-tab=\"methods\">MALDI &amp; Methods<\/button>\n    <button class=\"tab-btn\" data-tab=\"quiz\">Self-Test<\/button>\n  <\/nav>\n\n  <!-- ============================================================ -->\n  <!-- TAXONOMY -->\n  <!-- ============================================================ -->\n  <section class=\"panel active\" id=\"panel-taxonomy\">\n\n    <div class=\"card-block\">\n      <h2>The shape of the organism <span class=\"tag\">core fact<\/span><\/h2>\n      <p class=\"lead\">Click the card to flip. This is the one-line description you should be able to recite without thinking.<\/p>\n      <div class=\"deck-controls\">\n        <span class=\"deck-count\" id=\"tax-count\">Card 1 of 6<\/span>\n        <span class=\"pill gold\" id=\"tax-known-pill\">0 marked known<\/span>\n      <\/div>\n      <div class=\"flash-stage\">\n        <div class=\"flashcard\" id=\"tax-card\">\n          <div class=\"face front\"><div class=\"kicker\">Question<\/div><div class=\"q-text\" id=\"tax-q\"><\/div><div class=\"hint\">tap to flip<\/div><\/div>\n          <div class=\"face back\"><div class=\"kicker\">Answer<\/div><div class=\"a-text\" id=\"tax-a\"><\/div><div class=\"hint\">tap to flip back<\/div><\/div>\n        <\/div>\n      <\/div>\n      <div class=\"deck-nav\">\n        <button class=\"btn ghost\" id=\"tax-prev\">&larr; Back<\/button>\n        <button class=\"btn dontknow\" id=\"tax-dontknow\">Didn&#8217;t know<\/button>\n        <button class=\"btn know\" id=\"tax-know\">Knew it \u2713<\/button>\n        <button class=\"btn ghost\" id=\"tax-next\">Next &rarr;<\/button>\n      <\/div>\n    <\/div>\n\n    <div class=\"card-block\">\n      <h2>Nomenclature \u2014 what you actually need <span class=\"tag\">generalised<\/span><\/h2>\n      <div class=\"generalise-box\">\n        <span class=\"label\">Memorise this sentence, not the table<\/span>\n        Taxonomy has been revised: <strong>many former <em>Actinomyces<\/em> species have been reclassified<\/strong> into new genera (<em>Schaalia<\/em>, <em>Winkia<\/em>, <em>Gleimia<\/em>, <em>Pauljensenia<\/em>, <em>Bowdeniella<\/em>). The species name you learned may not be the current valid name &mdash; check before reporting.\n      <\/div>\n      <p class=\"lead\" style=\"margin-bottom:8px;\">If you want a couple of concrete anchors, these are the ones worth keeping:<\/p>\n      <table class=\"clean\">\n        <tr><th>Still called <em>Actinomyces<\/em><\/th><th>Renamed<\/th><\/tr>\n        <tr><td><em>A. israelii<\/em> (the classic cause of actinomycosis)<\/td><td><em>A. odontolyticus<\/em> \u2192 <em>Schaalia odontolytica<\/em><\/td><\/tr>\n        <tr><td><em>A. naeslundii<\/em><\/td><td><em>A. meyeri<\/em> \u2192 <em>Schaalia meyeri<\/em><\/td><\/tr>\n        <tr><td><em>A. viscosus<\/em><\/td><td><em>A. neuii<\/em> \u2192 <em>Winkia neuii<\/em><\/td><\/tr>\n      <\/table>\n      <p class=\"lead\" style=\"margin-top:10px; margin-bottom:0;\">Full reassignment table (27 species) \u2014 for reference, not for rote memorisation:<\/p>\n      <details style=\"margin-top:8px;\">\n        <summary style=\"cursor:pointer; font-size:13px; color:var(--violet); font-weight:600;\">Show full table<\/summary>\n        <div style=\"overflow-x:auto; margin-top:10px;\">\n        <table class=\"clean\" style=\"font-size:12.5px;\">\n          <tr><th>Previous name<\/th><th>Current name<\/th><\/tr>\n          <tr><td><em>Actinomyces israelii<\/em><\/td><td><em>Actinomyces israelii<\/em><\/td><\/tr>\n          <tr><td><em>Actinomyces graevenitzii<\/em><\/td><td><em>Actinomyces graevenitzii<\/em><\/td><\/tr>\n          <tr><td><em>Actinomyces gerencseriae<\/em><\/td><td><em>Actinomyces gerencseriae<\/em><\/td><\/tr>\n          <tr><td><em>Actinomyces naeslundii<\/em><\/td><td><em>Actinomyces naeslundii<\/em><\/td><\/tr>\n          <tr><td><em>Actinomyces odontolyticus<\/em><\/td><td><em>Schaalia odontolytica<\/em><\/td><\/tr>\n          <tr><td><em>Actinomyces viscosus<\/em><\/td><td><em>Actinomyces viscosus<\/em><\/td><\/tr>\n          <tr><td><em>Actinomyces funkei<\/em><\/td><td><em>Schaalia funkei<\/em><\/td><\/tr>\n          <tr><td><em>Actinomyces europaeus<\/em><\/td><td><em>Gleimia europaea<\/em><\/td><\/tr>\n          <tr><td><em>Actinomyces urogenitalis<\/em><\/td><td><em>Actinomyces urogenitalis<\/em><\/td><\/tr>\n          <tr><td><em>Actinomyces meyeri<\/em><\/td><td><em>Schaalia meyeri<\/em><\/td><\/tr>\n          <tr><td><em>Actinomyces neuii<\/em><\/td><td><em>Winkia neuii<\/em><\/td><\/tr>\n          <tr><td><em>Actinomyces neuii<\/em> subsp. <em>neuii<\/em><\/td><td><em>Winkia neuii<\/em> subsp. <em>neuii<\/em><\/td><\/tr>\n          <tr><td><em>Actinomyces neuii<\/em> subsp. <em>anitratus<\/em><\/td><td><em>Winkia neuii<\/em> subsp. <em>anitrata<\/em><\/td><\/tr>\n          <tr><td><em>Actinomyces radingae<\/em><\/td><td><em>Schaalia radingae<\/em><\/td><\/tr>\n          <tr><td><em>Actinomyces turicensis<\/em><\/td><td><em>Schaalia turicensis<\/em><\/td><\/tr>\n          <tr><td><em>Actinomyces radicidentis<\/em><\/td><td><em>Actinomyces radicidentis<\/em><\/td><\/tr>\n          <tr><td><em>Actinomyces cardiffensis<\/em><\/td><td><em>Schaalia cardiffensis<\/em><\/td><\/tr>\n          <tr><td><em>Actinomyces oricola<\/em><\/td><td><em>Actinomyces oricola<\/em><\/td><\/tr>\n          <tr><td><em>Actinomyces nasicola<\/em><\/td><td><em>Bowdeniella nasicola<\/em><\/td><\/tr>\n          <tr><td><em>Actinomyces massiliensis<\/em><\/td><td><em>Actinomyces massiliensis<\/em><\/td><\/tr>\n          <tr><td><em>Actinomyces johnsonii<\/em><\/td><td><em>Actinomyces johnsonii<\/em><\/td><\/tr>\n          <tr><td><em>Actinomyces dentalis<\/em><\/td><td><em>Actinomyces dentalis<\/em><\/td><\/tr>\n          <tr><td><em>Actinomyces hongkongensis<\/em><\/td><td><em>Pauljensenia hongkongensis<\/em><\/td><\/tr>\n          <tr><td><em>Actinomyces hominis<\/em><\/td><td><em>Gleimia hominis<\/em><\/td><\/tr>\n          <tr><td><em>Actinomyces oris<\/em><\/td><td><em>Actinomyces oris<\/em><\/td><\/tr>\n          <tr><td><em>Actinomyces timonensis<\/em><\/td><td><em>Actinomyces timonensis<\/em><\/td><\/tr>\n          <tr><td><em>Actinomyces georgiae<\/em><\/td><td><em>Schaalia georgiae<\/em><\/td><\/tr>\n        <\/table>\n        <\/div>\n      <\/details>\n    <\/div>\n\n    <div class=\"card-block\">\n      <h2>Clinical anchor points<\/h2>\n      <table class=\"clean\">\n        <tr><th>Fact<\/th><th>Detail<\/th><\/tr>\n        <tr><td>Where it lives normally<\/td><td>Oral cavity, GI tract, female urogenital tract (normal microbiota)<\/td><\/tr>\n        <tr><td>Main cause of actinomycosis<\/td><td><em>Actinomyces israelii<\/em><\/td><\/tr>\n        <tr><td>Other reported causes<\/td><td><em>A. odontolyticus, A. meyeri, A. gerencseriae, A. naeslundii<\/em><\/td><\/tr>\n        <tr><td>Infection pattern<\/td><td>Rare, usually polymicrobial; more severe if immunocompromised<\/td><\/tr>\n        <tr><td>Watch for<\/td><td><em>Arachnia propionica<\/em> in canaliculitis (not <em>Actinomyces<\/em>, but mimics it)<\/td><\/tr>\n        <tr><td>Hazard \/ containment<\/td><td>Hazard Group 2 &middot; Containment Level 2<\/td><\/tr>\n      <\/table>\n    <\/div>\n\n  <\/section>\n\n  <!-- ============================================================ -->\n  <!-- WORKFLOW -->\n  <!-- ============================================================ -->\n  <section class=\"panel\" id=\"panel-workflow\">\n    <div class=\"card-block\">\n      <h2>The identification pathway <span class=\"tag\">tap each box<\/span><\/h2>\n      <p class=\"lead\">This is the logic the SMI flowchart encodes. Tap each step to see why it&#8217;s there \u2014 the goal is to be able to redraw this from memory.<\/p>\n\n      <div class=\"flow\">\n        <div class=\"flow-node start\">Clinical specimen<\/div>\n        <div class=\"flow-arrow\"><\/div>\n        <div class=\"flow-branch\">\n          <div class=\"flow-branch-col\">\n            <div class=\"flow-node\" data-detail=\"A few Actinomyces, including A. israelii, give the classic molar-tooth \/ breadcrumb colony here.\">Actinomyces selective agar\n              <div class=\"flow-detail\">Metronidazole 10 mg\/L + nalidixic acid 30 mg\/L. A few species (incl. <em>A. israelii<\/em>) give classic molar-tooth\/breadcrumb colonies here.<\/div>\n            <\/div>\n          <\/div>\n          <div class=\"flow-branch-col\">\n            <div class=\"flow-node\" data-detail=\"Most species just look white\/grey here \u2014 colonial appearance varies.\">Fastidious anaerobic agar\n              <div class=\"flow-detail\">Or equivalent agar without neomycin. Colonial appearance varies by species \u2014 majority are simply white\/grey.<\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n        <div class=\"flow-arrow\"><\/div>\n        <div class=\"flow-node\" data-detail=\"Branching, beaded, filamentous Gram-positive bacilli \u2014 but easily over-decolourised (see Gram Stain tab).\">Gram stain\n          <div class=\"flow-detail\">Looking for branching, beaded, filamentous or coccobacillary Gram-positive bacilli. Caution: easily over-decolourised \u2192 false Gram-negative.<\/div>\n        <\/div>\n        <div class=\"flow-arrow\"><\/div>\n        <div class=\"flow-branch\">\n          <div class=\"flow-branch-col\">\n            <div class=\"flow-node\" data-detail=\"Branching morphology, Gram-positive \u2192 proceed down the identification branch.\">Gram +ve, branching\n              <div class=\"flow-detail\">Proceed to species-level identification (right-hand branch below).<\/div>\n            <\/div>\n          <\/div>\n          <div class=\"flow-branch-col\">\n            <div class=\"flow-node\" data-detail=\"If Gram-negative on stain, it is very likely NOT Actinomyces \u2014 but remember over-decolourisation can fake this result.\">Gram &minus;ve\n              <div class=\"flow-detail\">\u2192 Not <em>Actinomyces<\/em> species. But: check decolourisation technique before accepting this at face value.<\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n        <div class=\"flow-arrow\"><\/div>\n        <div class=\"flow-branch\">\n          <div class=\"flow-branch-col\"><div class=\"flow-node\" data-detail=\"Used as an alternative to MALDI-TOF, or for confirmation when MALDI-TOF result is uncertain.\">Molecular method\n            <div class=\"flow-detail\">16S rRNA sequencing or NGS (ref. lab). Used for confirmation or when closely related species can&#8217;t be split by MALDI-TOF.<\/div>\n          <\/div><\/div>\n          <div class=\"flow-branch-col\"><div class=\"flow-node\" data-detail=\"Primary method \u2014 but database-dependent and degraded by old\/chalky colonies.\">MALDI-TOF MS\n            <div class=\"flow-detail\">Primary ID method. Limitations: database must be current; closely related species share protein profiles; old\/chalky colonies reduce accuracy.<\/div>\n          <\/div><\/div>\n          <div class=\"flow-branch-col\"><div class=\"flow-node\" data-detail=\"Biochemical tests, indole, catalase \u2014 useful but not reliable alone.\">Conventional methods\n            <div class=\"flow-detail\">Biochemical kits, indole, catalase. Not reliable used alone \u2014 confirm with taxonomic keys, not just the kit code.<\/div>\n          <\/div><\/div>\n        <\/div>\n        <div class=\"flow-arrow\"><\/div>\n        <div class=\"flow-node end\">Confirm species \u2192 report (refer to ref. lab if needed)<\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- ============================================================ -->\n  <!-- GRAM STAIN \u2014 SIGNATURE INTERACTIVE -->\n  <!-- ============================================================ -->\n  <section class=\"panel\" id=\"panel-gram\">\n    <div class=\"card-block\">\n      <h2>Why Gram stain lies to you <span class=\"tag\">signature interaction<\/span><\/h2>\n      <p class=\"lead\"><em>Actinomyces<\/em> is genuinely Gram-positive \u2014 but it is one of the easiest organisms to make look Gram-negative by mistake. Drag the slider to over-decolourise and watch what happens.<\/p>\n\n      <div class=\"gram-demo\">\n        <div class=\"gram-visual\">\n          <div class=\"bacillus-row\" id=\"bacillusRow\"><\/div>\n          <div class=\"gram-readout\" id=\"gramReadout\">Correctly stained: Gram-POSITIVE<\/div>\n        <\/div>\n        <div class=\"gram-controls\">\n          <label for=\"decolSlider\">Decolourisation (acetone \/ iodine-acetone) intensity<\/label>\n          <input type=\"range\" min=\"0\" max=\"100\" value=\"15\" id=\"decolSlider\">\n          <div class=\"gram-scale\"><span>Gentle, correct technique<\/span><span>Excessive \u2014 strips crystal violet<\/span><\/div>\n          <div class=\"gram-explain\" id=\"gramExplain\">\n            At a normal decolourisation step, crystal violet stays bound in the thick peptidoglycan wall \u2014 bacilli read out as deep violet, correctly Gram-positive.\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"exception-box\" style=\"margin-top:18px;\">\n        <span class=\"label\">Exam trap<\/span>\n        Excess acetone or iodine\/acetone during decolourisation strips crystal violet from the cell wall &rarr; <em>Actinomyces<\/em> appears falsely <strong>Gram-negative<\/strong>. If a &#8220;branching Gram-negative rod&#8221; report doesn&#8217;t fit the clinical picture, suspect technique before ruling out <em>Actinomyces<\/em>.\n      <\/div>\n\n      <div class=\"generalise-box\">\n        <span class=\"label\">Two genuine look-alikes on Gram stain<\/span>\n        <em>Propionibacterium<\/em>\/<em>Cutibacterium<\/em> \u2014 pleomorphic bacilli that may appear to branch.<br>\n        <em>Nocardia<\/em> \u2014 morphologically indistinguishable from <em>Actinomyces<\/em> on Gram stain alone (need other tests to separate them).\n      <\/div>\n\n      <div class=\"exception-box\">\n        <span class=\"label\">Strict anaerobe exceptions<\/span>\n        Most <em>Actinomyces<\/em> species are facultative anaerobes. Three are strict anaerobes \u2014 worth knowing by name: <em>A. israelii<\/em>, <em>A. gerencseriae<\/em>, <em>A. meyeri<\/em>.\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- ============================================================ -->\n  <!-- COLONIES -->\n  <!-- ============================================================ -->\n  <section class=\"panel\" id=\"panel-colonies\">\n    <div class=\"card-block\">\n      <h2>Colony morphology \u2014 the pattern, not the list <span class=\"tag\">generalised<\/span><\/h2>\n      <div class=\"generalise-box\">\n        <span class=\"label\">The 90% rule<\/span>\n        Don&#8217;t memorise 27 rows. <strong>Most <em>Actinomyces<\/em> colonies are white or grey, smooth, convex, with entire edges<\/strong> &mdash; visually unremarkable. Only a handful of species give the distinctive &#8220;textbook&#8221; appearance.\n      <\/div>\n      <p class=\"lead\" style=\"margin-top:14px;\">Tap a plate below to reveal the one detail worth remembering for that species.<\/p>\n      <div class=\"colony-grid\" id=\"colonyGrid\"><\/div>\n    <\/div>\n\n    <div class=\"card-block\">\n      <h2>Growth conditions \u2014 quick recall<\/h2>\n      <table class=\"clean\">\n        <tr><th>Parameter<\/th><th>Value<\/th><\/tr>\n        <tr><td>Optimum temperature<\/td><td>35&ndash;37&deg;C<\/td><\/tr>\n        <tr><td>Atmosphere<\/td><td>Anaerobic favoured; some grow aerobically or in air + 5&ndash;10% CO&#8322;<\/td><\/tr>\n        <tr><td>Visible colonies<\/td><td>3&ndash;7 days<\/td><\/tr>\n        <tr><td>Full detection window<\/td><td>10&ndash;14 days (don&#8217;t discard early!)<\/td><\/tr>\n        <tr><td>Primary isolation medium<\/td><td>Fastidious anaerobic agar (no neomycin \u2014 inhibitory)<\/td><\/tr>\n        <tr><td>Selective medium<\/td><td>Actinomyces selective agar: metronidazole 10 mg\/L + nalidixic acid 30 mg\/L<\/td><\/tr>\n        <tr><td>Broth enrichment<\/td><td>Rarely beneficial<\/td><\/tr>\n      <\/table>\n    <\/div>\n  <\/section>\n\n  <!-- ============================================================ -->\n  <!-- METHODS -->\n  <!-- ============================================================ -->\n  <section class=\"panel\" id=\"panel-methods\">\n    <div class=\"card-block\">\n      <h2>MALDI-TOF MS \u2014 3 limitations <span class=\"tag\">flashcards<\/span><\/h2>\n      <div class=\"deck-controls\">\n        <span class=\"deck-count\" id=\"maldi-count\">Card 1 of 3<\/span>\n        <span class=\"pill gold\" id=\"maldi-known-pill\">0 marked known<\/span>\n      <\/div>\n      <div class=\"flash-stage\">\n        <div class=\"flashcard\" id=\"maldi-card\">\n          <div class=\"face front\"><div class=\"kicker\">Limitation<\/div><div class=\"q-text\" id=\"maldi-q\"><\/div><div class=\"hint\">tap to flip<\/div><\/div>\n          <div class=\"face back\"><div class=\"kicker\">Why it matters<\/div><div class=\"a-text\" id=\"maldi-a\"><\/div><div class=\"hint\">tap to flip back<\/div><\/div>\n        <\/div>\n      <\/div>\n      <div class=\"deck-nav\">\n        <button class=\"btn ghost\" id=\"maldi-prev\">&larr; Back<\/button>\n        <button class=\"btn dontknow\" id=\"maldi-dontknow\">Didn&#8217;t know<\/button>\n        <button class=\"btn know\" id=\"maldi-know\">Knew it \u2713<\/button>\n        <button class=\"btn ghost\" id=\"maldi-next\">Next &rarr;<\/button>\n      <\/div>\n    <\/div>\n\n    <div class=\"card-block\">\n      <h2>Conventional methods \u2014 the one number that&#8217;s testable<\/h2>\n      <table class=\"clean\">\n        <tr><th>Test<\/th><th>Result for <em>Actinomyces<\/em><\/th><\/tr>\n        <tr><td>Spot indole<\/td><td>Negative (note: <em>Propionibacterium\/Cutibacterium acnes<\/em> is indole-positive \u2014 a useful differentiator)<\/td><\/tr>\n        <tr><td>Catalase<\/td><td>Negative \u2014 <strong>except<\/strong> 5 species below<\/td><\/tr>\n      <\/table>\n      <div class=\"exception-box\" style=\"margin-top:14px;\">\n        <span class=\"label\">Catalase-positive exceptions \u2014 memorise these 5<\/span>\n        <em>A. viscosus<\/em> &middot; <em>A. neuii<\/em> subsp. <em>neuii<\/em> &middot; <em>A. neuii<\/em> subsp. <em>anitratus<\/em> &middot; <em>A. radicidentis<\/em> &middot; <em>A. hominis<\/em>\n      <\/div>\n      <p class=\"lead\" style=\"margin-bottom:0;\">Biochemical kits alone are unreliable \u2014 databases can be outdated\/incomplete, and reactions can be weak. Confirm with taxonomic keys.<\/p>\n    <\/div>\n\n    <div class=\"card-block\">\n      <h2>Molecular methods<\/h2>\n      <table class=\"clean\">\n        <tr><th>Method<\/th><th>Use \/ limitation<\/th><\/tr>\n        <tr><td>16S rRNA sequencing<\/td><td>Alternative\/confirmatory. Struggles to separate <em>A. naeslundii<\/em>, <em>A. viscosus<\/em>, <em>A. oris<\/em>. Databases may contain erroneous top matches.<\/td><\/tr>\n        <tr><td>NGS<\/td><td>Mostly reference-lab only.<\/td><\/tr>\n      <\/table>\n      <p class=\"lead\" style=\"margin-top:14px; margin-bottom:0;\">Storage: sub-culture pure isolate into anaerobic broth. Referral: UK Anaerobe Reference Unit (UKARU), correctly packaged per transport regs.<\/p>\n    <\/div>\n  <\/section>\n\n  <!-- ============================================================ -->\n  <!-- QUIZ -->\n  <!-- ============================================================ -->\n  <section class=\"panel\" id=\"panel-quiz\">\n    <div class=\"card-block\" id=\"quizActive\">\n      <h2>Self-test <span class=\"tag\" id=\"quizTag\">mixed recall<\/span><\/h2>\n      <div class=\"quiz-progress\" id=\"quizProgress\">Question 1 of 10<\/div>\n      <div class=\"quiz-q\" id=\"quizQ\"><\/div>\n      <div class=\"quiz-options\" id=\"quizOptions\"><\/div>\n      <div class=\"quiz-feedback\" id=\"quizFeedback\"><\/div>\n      <div class=\"deck-nav\">\n        <button class=\"btn primary\" id=\"quizNext\" disabled>Next question &rarr;<\/button>\n      <\/div>\n    <\/div>\n    <div class=\"card-block\" id=\"quizDone\" style=\"display:none;\">\n      <div class=\"quiz-summary\">\n        <div class=\"big-score\" id=\"quizScore\">0\/10<\/div>\n        <div class=\"score-msg\" id=\"quizMsg\"><\/div>\n        <button class=\"btn primary\" id=\"quizRestart\">Try again (new shuffle)<\/button>\n      <\/div>\n    <\/div>\n  <\/section>\n\n<\/div>\n\n<footer>Built from your UK SMI ID 9 notes &middot; for self-testing, not a substitute for the full SMI<\/footer>\n\n<script>\n(function(){\n\n\/* =========================================================\n   SHARED STATE\n========================================================= *\/\nlet totalSeen = 0;\n\/\/ Card-count totals (6 taxonomy + 3 MALDI + 11 colony + 10 quiz)\nlet totalCards = 6 + 3 + 11 + 10;\n\nfunction bumpProgress(){\n  totalSeen++;\n  document.getElementById('globalProgress').style.width = Math.min(100, (totalSeen\/totalCards)*100) + '%';\n  document.getElementById('globalProgressLabel').textContent = Math.min(totalSeen,totalCards) + ' of ' + totalCards + ' cards seen';\n}\n\n\/* =========================================================\n   TABS\n========================================================= *\/\nconst tabBtns = document.querySelectorAll('.tab-btn');\ntabBtns.forEach(btn=>{\n  btn.addEventListener('click', ()=>{\n    tabBtns.forEach(b=>b.classList.remove('active'));\n    btn.classList.add('active');\n    document.querySelectorAll('.panel').forEach(p=>p.classList.remove('active'));\n    document.getElementById('panel-'+btn.dataset.tab).classList.add('active');\n    window.scrollTo({top:0, behavior:'smooth'});\n  });\n});\n\n\/* =========================================================\n   GENERIC FLASHCARD DECK FACTORY\n========================================================= *\/\nfunction makeDeck(opts){\n  const {cards, cardEl, qEl, aEl, prevBtn, nextBtn, knowBtn, dontknowBtn, countEl, pillEl} = opts;\n  let idx = 0;\n  let known = new Set();\n  let seen = new Set();\n\n  function render(){\n    cardEl.classList.remove('flipped');\n    qEl.textContent = cards[idx].q;\n    aEl.textContent = cards[idx].a;\n    countEl.textContent = 'Card ' + (idx+1) + ' of ' + cards.length;\n    pillEl.textContent = known.size + ' marked known';\n    prevBtn.disabled = idx === 0;\n    if(!seen.has(idx)){ seen.add(idx); bumpProgress(); }\n  }\n\n  cardEl.addEventListener('click', ()=> cardEl.classList.toggle('flipped'));\n  prevBtn.addEventListener('click', ()=>{ if(idx>0){idx--; render();} });\n  nextBtn.addEventListener('click', ()=>{ idx = (idx+1) % cards.length; render(); });\n  knowBtn.addEventListener('click', ()=>{ known.add(idx); pillEl.textContent = known.size + ' marked known'; idx = (idx+1) % cards.length; render(); });\n  dontknowBtn.addEventListener('click', ()=>{ known.delete(idx); idx = (idx+1) % cards.length; render(); });\n\n  render();\n}\n\n\/* TAXONOMY DECK *\/\nconst taxCards = [\n  {q:\"Gram stain reaction & basic shape of Actinomyces?\", a:\"Gram-positive, filamentous, branching, beaded rods.\"},\n  {q:\"Microaerophilic \/ anaerobic preference?\", a:\"Microaerophilic to facultative anaerobic, with high G+C DNA content.\"},\n  {q:\"Taxonomic placement (family \u2192 order \u2192 phylum)?\", a:\"Family Actinomycetaceae \u2192 order Actinomycetales \u2192 phylum Actinomycetota (Actinobacteria).\"},\n  {q:\"How many validly published Actinomyces species exist, and when was the genus revised?\", a:\"More than 30 species; genus revised in 2018.\"},\n  {q:\"Where does Actinomyces normally live in the body?\", a:\"Normal microbiota of the oral cavity, GI tract, and female urogenital tract \u2014 it's an opportunist, not a primary invader.\"},\n  {q:\"What is actinomycosis, in one line?\", a:\"A rare, usually polymicrobial infection caused by Actinomyces species, more severe in immunocompromised patients; A. israelii is the main cause.\"},\n];\nmakeDeck({\n  cards: taxCards,\n  cardEl: document.getElementById('tax-card'),\n  qEl: document.getElementById('tax-q'), aEl: document.getElementById('tax-a'),\n  prevBtn: document.getElementById('tax-prev'), nextBtn: document.getElementById('tax-next'),\n  knowBtn: document.getElementById('tax-know'), dontknowBtn: document.getElementById('tax-dontknow'),\n  countEl: document.getElementById('tax-count'), pillEl: document.getElementById('tax-known-pill'),\n});\n\n\/* MALDI DECK *\/\nconst maldiCards = [\n  {q:\"Database currency problem\", a:\"Taxonomy keeps changing\/being reclassified \u2014 if the database isn't updated, species-level ID becomes unreliable.\"},\n  {q:\"Closely related species problem\", a:\"Several Actinomyces species share very similar protein profiles \u2192 MALDI-TOF can't always split them apart, risking misidentification.\"},\n  {q:\"Colony age\/morphology problem\", a:\"Older colonies, or ones that look dry\/chalky, give poorer mass spectral output \u2192 lower identification confidence. Use fresh colonies where possible.\"},\n];\nmakeDeck({\n  cards: maldiCards,\n  cardEl: document.getElementById('maldi-card'),\n  qEl: document.getElementById('maldi-q'), aEl: document.getElementById('maldi-a'),\n  prevBtn: document.getElementById('maldi-prev'), nextBtn: document.getElementById('maldi-next'),\n  knowBtn: document.getElementById('maldi-know'), dontknowBtn: document.getElementById('maldi-dontknow'),\n  countEl: document.getElementById('maldi-count'), pillEl: document.getElementById('maldi-known-pill'),\n});\n\n\/* =========================================================\n   WORKFLOW NODE TOGGLES\n========================================================= *\/\ndocument.querySelectorAll('.flow-node[data-detail]').forEach(node=>{\n  node.addEventListener('click', ()=> node.classList.toggle('open'));\n});\n\n\/* =========================================================\n   GRAM STAIN SLIDER (signature interactive)\n========================================================= *\/\nconst bacillusRow = document.getElementById('bacillusRow');\nconst NUM_BACILLI = 14;\nfor(let i=0;i<NUM_BACILLI;i++){\n  const b = document.createElement('div');\n  b.className = 'bacillus';\n  b.style.setProperty('--rot', (Math.random()*50-25)+'deg');\n  bacillusRow.appendChild(b);\n}\nconst bacilli = bacillusRow.querySelectorAll('.bacillus');\nconst slider = document.getElementById('decolSlider');\nconst readout = document.getElementById('gramReadout');\nconst explain = document.getElementById('gramExplain');\n\nfunction updateGram(){\n  const v = parseInt(slider.value, 10);\n  \/\/ colour interpolation: violet (positive) -> pink\/red (false negative)\n  let colour, label, explainText, bg;\n  if(v < 35){\n    colour = '#4B3A86';\n    label = 'Correctly stained: Gram-POSITIVE';\n    bg = 'var(--violet-soft)'; readout.style.color = 'var(--violet)';\n    explainText = \"At a normal decolourisation step, crystal violet stays bound in the thick peptidoglycan wall \u2014 bacilli read out as deep violet, correctly Gram-positive.\";\n  } else if(v < 65){\n    colour = '#9C6F8E';\n    label = 'Borderline \u2014 technique drifting';\n    bg = 'var(--rust-soft)'; readout.style.color = 'var(--colony-deep)';\n    explainText = \"Decolouriser is starting to strip crystal violet. On a real slide this is where inconsistent technique creates inter-observer disagreement.\";\n  } else {\n    colour = '#C2515B';\n    label = 'False Gram-NEGATIVE result';\n    bg = 'var(--rust-soft)'; readout.style.color = 'var(--rust)';\n    explainText = \"Excessive acetone\/iodine-acetone has stripped crystal violet entirely. Actinomyces now LOOKS Gram-negative \u2014 a classic misidentification trap, since the organism itself hasn't changed.\";\n  }\n  bacilli.forEach(b=> b.style.background = colour);\n  readout.textContent = label;\n  readout.style.background = bg;\n  explain.textContent = explainText;\n}\nslider.addEventListener('input', updateGram);\nupdateGram();\n\n\/* =========================================================\n   COLONY GRID\n========================================================= *\/\nconst colonyData = [\n  {name:\"A. israelii\", petri:\"breadcrumb\", detail:\"White\u2013cream, classic breadcrumb\/molar-tooth, gritty, pitting. Slow growing. The textbook one \u2014 main cause of actinomycosis.\"},\n  {name:\"A. gerencseriae\", petri:\"breadcrumb\", detail:\"Bright white breadcrumb\/molar-tooth, softer than israelii. Slow growing. Strict anaerobe.\"},\n  {name:\"A. odontolyticus\", petri:\"pink\", detail:\"Cream \u2192 red, smooth\/convex. Old colonies may turn dark brown. Now Schaalia odontolytica.\"},\n  {name:\"A. funkei\", petri:\"fried\", detail:\"Grey, semi-translucent, opaque centre \u2014 classic 'fried egg' appearance. Memorable visual, low clinical priority otherwise.\"},\n  {name:\"A. graevenitzii\", petri:\"breadcrumb\", detail:\"Molar-tooth OR smooth forms. Distinctive: shows RED FLUORESCENCE. Old colonies darken.\"},\n  {name:\"A. naeslundii\", petri:\"smooth\", detail:\"White\/cream\/pinkish, smooth, convex \u2014 the 'unremarkable majority' look. Occasional rough forms.\"},\n  {name:\"A. viscosus\", petri:\"smooth\", detail:\"Two forms: large smooth (V\/Y\/T shapes) or small rough with branching filaments. Catalase-POSITIVE (an exception).\"},\n  {name:\"A. meyeri\", petri:\"smooth\", detail:\"Small, white, smooth, convex. Slow growing. Strict anaerobe.\"},\n  {name:\"Scardovia wiggsiae\", petri:\"breadcrumb\", detail:\"Breadcrumb\/molar-tooth, gritty, pitting \u2014 but NOT Actinomyces. Very slow growing; may evade conventional ID entirely.\"},\n  {name:\"A. oricola\", petri:\"breadcrumb\", detail:\"White, breadcrumb, pitting agar. One of the few non-israelii species with this classic look.\"},\n  {name:\"A. radingae \/ turicensis\", petri:\"grey\", detail:\"Grey-white, semi-translucent, low convex \u2014 the generic 'grey and unremarkable' look shared by several minor species.\"},\n];\n\nconst grid = document.getElementById('colonyGrid');\ncolonyData.forEach(sp=>{\n  const card = document.createElement('div');\n  card.className = 'colony-card';\n  card.innerHTML = `\n    <div class=\"petri ${sp.petri}\"><\/div>\n    <div class=\"sp-name\">${sp.name}<\/div>\n    <div class=\"reveal-hint\">tap to reveal<\/div>\n    <div class=\"sp-detail\">${sp.detail}<\/div>\n  `;\n  card.addEventListener('click', ()=>{\n    const wasRevealed = card.classList.contains('revealed');\n    if(!wasRevealed) bumpProgress();\n    card.classList.toggle('revealed');\n  });\n  grid.appendChild(card);\n});\n\n\/* =========================================================\n   QUIZ\n========================================================= *\/\nconst quizBank = [\n  {q:\"A Gram stain on a fastidious anaerobic culture shows Gram-negative branching rods, but the clinical picture strongly suggests actinomycosis. What's the most likely explanation?\", opts:[\"The organism is definitely not Actinomyces\",\"Excessive decolourisation has stripped crystal violet, giving a false Gram-negative result\",\"Actinomyces is naturally Gram-variable\",\"The agar was contaminated\"], correct:1, why:\"Actinomyces is easily over-decolourised by acetone\/iodine-acetone, producing a false Gram-negative appearance even though the organism is genuinely Gram-positive.\"},\n  {q:\"Which THREE Actinomyces species are strict anaerobes (the rest are facultative)?\", opts:[\"A. naeslundii, A. viscosus, A. oris\",\"A. israelii, A. gerencseriae, A. meyeri\",\"A. odontolyticus, A. funkei, A. radingae\",\"A. neuii, A. radicidentis, A. hominis\"], correct:1, why:\"A. israelii, A. gerencseriae and A. meyeri are the strict anaerobes; the majority of the genus is facultatively anaerobic.\"},\n  {q:\"Which catalase result is the exception rather than the rule for Actinomyces species?\", opts:[\"Catalase-negative is the exception\",\"Catalase-positive is the exception (5 named species)\",\"All species are catalase-positive\",\"Catalase testing doesn't apply to this genus\"], correct:1, why:\"Almost all Actinomyces are catalase-negative. The exceptions are A. viscosus, A. neuii subsp. neuii, A. neuii subsp. anitratus, A. radicidentis and A. hominis.\"},\n  {q:\"What's the primary identification method recommended after culture and Gram stain?\", opts:[\"16S rRNA sequencing\",\"MALDI-TOF MS\",\"Biochemical commercial kit alone\",\"NGS\"], correct:1, why:\"MALDI-TOF MS is the primary identification method; molecular and conventional methods are alternatives or used for confirmation.\"},\n  {q:\"Why can MALDI-TOF MS misidentify some Actinomyces species?\", opts:[\"It cannot detect Gram-positive organisms\",\"Closely related species share similar protein profiles, and old\/chalky colonies degrade spectral quality\",\"It only works on liquid cultures\",\"It requires a Gram stain first\"], correct:1, why:\"Similar protein profiles between closely related species, plus poor spectral quality from old or chalky colonies, both reduce MALDI-TOF accuracy.\"},\n  {q:\"A urine\/genital isolate is spot indole-POSITIVE. Is this consistent with Actinomyces?\", opts:[\"Yes, all Actinomyces are indole-positive\",\"No \u2014 Actinomyces is indole-negative; this result fits Propionibacterium\/Cutibacterium acnes instead\",\"Indole testing isn't used for this genus\",\"Yes, but only for A. israelii\"], correct:1, why:\"Actinomyces species are spot indole-negative. Cutibacterium\/Propionibacterium acnes is indole-positive \u2014 a useful differentiator.\"},\n  {q:\"What has happened to the taxonomy of many former Actinomyces species?\", opts:[\"Nothing has changed since the genus was first described\",\"Many have been reclassified into new genera such as Schaalia, Winkia, Gleimia, Pauljensenia and Bowdeniella\",\"They have all been merged into a single species\",\"They have been reclassified as Nocardia\"], correct:1, why:\"The 2018 genus revision moved many species into new genera. A. odontolyticus \u2192 Schaalia odontolytica and A. neuii \u2192 Winkia neuii are good examples to remember.\"},\n  {q:\"Which organism is morphologically indistinguishable from Actinomyces on Gram stain, requiring other tests to differentiate?\", opts:[\"Cutibacterium acnes\",\"Nocardia species\",\"Scardovia wiggsiae\",\"Arachnia propionica\"], correct:1, why:\"Nocardia species look the same as Actinomyces on Gram stain \u2014 you need growth characteristics, staining beyond Gram (e.g. modified acid-fast), or other methods to separate them.\"},\n  {q:\"Why might a culture be discarded too early when Actinomyces is suspected?\", opts:[\"Because colonies always appear within 24 hours\",\"Because visible colonies may take 3\u20137 days, but full detection can need 10\u201314 days\",\"Because Actinomyces never grows on solid media\",\"Because incubation should be limited to 48 hours\"], correct:1, why:\"Some species are slow-growing; colonies may appear at 3\u20137 days but detection can require 10\u201314 days of incubation before being called negative.\"},\n  {q:\"What is the correct first-line action if MALDI-TOF MS gives a low-confidence identification?\", opts:[\"Report the best-match result regardless of confidence\",\"Use conventional or molecular methods for confirmation\",\"Repeat the Gram stain only\",\"Discard the isolate as a contaminant\"], correct:1, why:\"Low confidence or need for further confirmation should trigger conventional or molecular methods, not automatic acceptance of a low-confidence MALDI-TOF result.\"},\n];\n\nlet quizOrder = [], quizIdx = 0, quizScore = 0, answered = false;\n\nfunction shuffle(arr){\n  const a = arr.slice();\n  for(let i=a.length-1;i>0;i--){\n    const j = Math.floor(Math.random()*(i+1));\n    [a[i],a[j]] = [a[j],a[i]];\n  }\n  return a;\n}\n\nfunction startQuiz(){\n  quizOrder = shuffle(quizBank.map((_,i)=>i));\n  quizIdx = 0; quizScore = 0; answered = false;\n  document.getElementById('quizActive').style.display = 'block';\n  document.getElementById('quizDone').style.display = 'none';\n  renderQuizQ();\n}\n\nfunction renderQuizQ(){\n  answered = false;\n  const q = quizBank[quizOrder[quizIdx]];\n  document.getElementById('quizProgress').textContent = 'Question ' + (quizIdx+1) + ' of ' + quizOrder.length + ' \u00b7 Score: ' + quizScore;\n  document.getElementById('quizQ').textContent = q.q;\n  const optWrap = document.getElementById('quizOptions');\n  optWrap.innerHTML = '';\n  const feedback = document.getElementById('quizFeedback');\n  feedback.className = 'quiz-feedback';\n  feedback.textContent = '';\n  document.getElementById('quizNext').disabled = true;\n\n  q.opts.forEach((optText, i)=>{\n    const b = document.createElement('button');\n    b.className = 'opt-btn';\n    b.textContent = optText;\n    b.addEventListener('click', ()=>{\n      if(answered) return;\n      answered = true;\n      bumpProgress();\n      const allBtns = optWrap.querySelectorAll('.opt-btn');\n      allBtns.forEach((btn, j)=>{\n        btn.disabled = true;\n        if(j === q.correct) btn.classList.add('correct');\n        else if(j === i) btn.classList.add('incorrect');\n      });\n      if(i === q.correct){\n        quizScore++;\n        feedback.className = 'quiz-feedback show right';\n        feedback.textContent = '\u2713 Correct \u2014 ' + q.why;\n      } else {\n        feedback.className = 'quiz-feedback show wrong';\n        feedback.textContent = '\u2717 Not quite \u2014 ' + q.why;\n      }\n      document.getElementById('quizProgress').textContent = 'Question ' + (quizIdx+1) + ' of ' + quizOrder.length + ' \u00b7 Score: ' + quizScore;\n      document.getElementById('quizNext').disabled = false;\n    });\n    optWrap.appendChild(b);\n  });\n}\n\ndocument.getElementById('quizNext').addEventListener('click', ()=>{\n  quizIdx++;\n  if(quizIdx >= quizOrder.length){\n    document.getElementById('quizActive').style.display = 'none';\n    document.getElementById('quizDone').style.display = 'block';\n    document.getElementById('quizScore').textContent = quizScore + '\/' + quizOrder.length;\n    let msg;\n    const pct = quizScore\/quizOrder.length;\n    if(pct === 1) msg = \"Clean sweep. You've got the testable core down.\";\n    else if(pct >= 0.8) msg = \"Strong. Revisit the ones you missed, then come back tomorrow.\";\n    else if(pct >= 0.5) msg = \"Halfway there \u2014 go back to the flashcards for the ones you're shaky on.\";\n    else msg = \"This is exactly what the trainer is for. Work through Taxonomy, Gram Stain and Methods again, then retry.\";\n    document.getElementById('quizMsg').textContent = msg;\n  } else {\n    renderQuizQ();\n  }\n});\ndocument.getElementById('quizRestart').addEventListener('click', startQuiz);\n\n\/* =========================================================\n   TOTAL CARD COUNT FOR PROGRESS BAR\n========================================================= *\/\n\/* =========================================================\n   FINAL LABEL SYNC (counts were pre-set at top of script)\n========================================================= *\/\ndocument.getElementById('globalProgressLabel').textContent = '0 of ' + totalCards + ' cards seen';\n\nstartQuiz();\n\n})();\n<\/script>\n\n<\/body>\n<\/html>\n\n","protected":false},"excerpt":{"rendered":"<p>Actinomyces \u2014 Identification Trainer UK SMI ID 9 &middot; Trainer Identification of Actinomyces An interactive drill, not a textbook. Built [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ngg_post_thumbnail":0,"footnotes":""},"categories":[194,60],"tags":[],"class_list":["post-1368","post","type-post","status-publish","format-standard","hentry","category-ai","category-laboratory"],"_links":{"self":[{"href":"https:\/\/microregistrar.com\/index.php?rest_route=\/wp\/v2\/posts\/1368","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/microregistrar.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/microregistrar.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/microregistrar.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/microregistrar.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1368"}],"version-history":[{"count":1,"href":"https:\/\/microregistrar.com\/index.php?rest_route=\/wp\/v2\/posts\/1368\/revisions"}],"predecessor-version":[{"id":1369,"href":"https:\/\/microregistrar.com\/index.php?rest_route=\/wp\/v2\/posts\/1368\/revisions\/1369"}],"wp:attachment":[{"href":"https:\/\/microregistrar.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1368"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/microregistrar.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1368"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/microregistrar.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1368"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}