attachment
attachment

Highlight the mistakes in the poster

analyse_media
Reading File
Searching the Web

dentin bonding agent generations classification 1st 2nd 3rd 4th 5th 6th composition examples

I now have enough information from both the image analysis and web research to give a thorough breakdown of all mistakes. Here is a detailed critique:

Mistakes Found in the Poster

1. 1st Generation - Wrong Era and Description

Error in the table: Listed as (1980s) with "High bond strength" as an advantage.
  • Correct: 1st generation bonding agents were introduced in the late 1960s-early 1970s, not the 1980s.
  • They had very LOW bond strength (2-3 MPa), not high bond strength. This was their primary limitation, and debonding was common within months.
Error in steps: The table shows 4 steps (Etch, Rinse, Primer, Bonding resin) for the 1st generation.
  • Correct: 1st generation had only 2 steps (etch enamel + apply adhesive). The timeline section at the bottom of the same poster correctly says "2-step."

2. 2nd Generation - Era and Classification Wrong

Error: Listed as "Total-etch 3-step system" from the 1990s.
  • Correct: 2nd generation agents appeared in the late 1970s, not the 1990s.
  • The classification "Total-etch 3-step" belongs to the 4th generation, not the 2nd.
  • 2nd gen used chemical bond/chelation to dentin calcium - they did NOT use total-etching.
  • The bottom evolution timeline of the same poster correctly labels Gen 2 as "Chemical Bond" from the 1970s, directly contradicting the main table.

3. 3rd Generation - Classification Mismatch

Error: Labeled as "Total-etch 2-step system" from the 1990s.
  • Correct: 3rd generation agents belong to the late 1970s to late 1980s, not the 1990s.
  • They used separate bonding agents for enamel and dentin and worked by partially removing/penetrating the smear layer - not true total-etch.
  • "Total-etch 2-step" is actually the 5th generation description (etch + single-bottle primer-adhesive).
  • The poster's own bottom timeline correctly places Gen 3 in the 1980s as "Smear Layer Primer," again contradicting the main table.

4. 4th Generation - Type and Classification Wrong

Error: Described as "All-in-one (etch, prime & bond in one bottle)".
  • Correct: 4th generation is the Total-etch 3-step system (separate etchant + primer + bonding agent). It is the gold standard with the highest bond strength.
  • The "all-in-one single bottle" description belongs to the 7th generation.
  • Examples listed (Scotchbond Multipurpose, All-Bond 2, OptiBond FL) are correctly 4th generation products, making this a clear internal contradiction - the right examples are given for the wrong description.

5. 5th Generation - Type Mislabeled

Error: Listed as "Self-etch/2-step system."
  • Correct: 5th generation is a Total-etch 2-step system (phosphoric acid etch + single bottle primer-adhesive combined). It is NOT a self-etch system.
  • The self-etch 2-step system is the 6th generation.
  • Single Bond, Prime & Bond NT, and One-Step (listed as examples) are correctly 5th generation, again showing the right products are placed under a wrong type description.

6. 6th Generation - Classification Mismatch

Error: Listed as "Self-etch 1-step system."
  • Correct: 6th generation is the Self-etch 2-step system (self-etching primer + bonding agent). The 1-step self-etch all-in-one belongs to the 7th generation.
  • Clearfil SE Bond is correctly a 6th generation product (2-step self-etch), but is listed here under a 1-step description, which is incorrect.

7. 7th Generation - Type Mislabeled as "Universal"

Error: Labeled as "Universal adhesive" with the note "no MDP."
  • Correct: 7th generation adhesives are all-in-one self-etch (1-step) systems, not "universal" adhesives in the modern sense.
  • Universal/multi-mode adhesives are a separate, more recent category (sometimes called 8th generation or simply "universal"). They contain MDP (10-methacryloyloxydecyl dihydrogen phosphate) as a key functional monomer - the poster says "no MDP," which is incorrect for most 7th gen products like G-Bond and iBond which do contain MDP or similar functional monomers.
  • G-Bond, iBond, and Xeno III are correctly 7th generation examples.

8. Era Inconsistencies Within the Table

  • 2nd Generation: Should be 1970s, not 1990s.
  • 3rd Generation: Should be late 1970s-1980s, not 1990s.
  • 4th Generation: Should be mid-to-late 1980s, not 2000s.
  • 5th Generation: Should be early 1990s, not 2000s.
  • The poster's own bottom timeline correctly places these generations in earlier decades, making the main table internally inconsistent.

9. Composition Error - 2nd Generation

Error: Lists "Halophosphorous monomer, infilled acrylic resin, Bis-GMA, HEMA" for 2nd generation.
  • Correct: 2nd generation agents used NPG-GMA (N-phenylglycine glycidyl methacrylate) and similar compounds to chelate with calcium in dentin. The components listed (Bis-GMA, HEMA) are more characteristic of 4th/5th generation systems.
  • NPG-GMA is the classic 2nd generation component - and the poster even lists "Cervident, NPG-GMA" as examples for the 1st generation, when NPG-GMA is actually a 2nd generation agent.

10. NPG-GMA Listed as 1st Generation Example

Error: NPG-GMA (Cervident) is listed as an example of the 1st generation.
  • Correct: NPG-GMA is the hallmark 2nd generation bonding agent. It was developed to chemically bond to dentin via calcium chelation. The 1st generation agents were copal varnishes and polyurethane-based adhesives.

Summary Table of Key Mistakes

LocationWhat the Poster SaysWhat is Correct
1st Gen era1980sLate 1960s-early 1970s
1st Gen advantageHigh bond strengthVery LOW bond strength
1st Gen exampleNPG-GMANPG-GMA is 2nd gen
2nd Gen era1990s1970s
2nd Gen typeTotal-etch 3-stepChemical bond (chelation), 2-step
3rd Gen era1990sLate 1970s-1980s
3rd Gen typeTotal-etch 2-stepSeparate enamel/dentin bonding, smear layer penetration
4th Gen typeAll-in-one (1-bottle)Total-etch 3-step (etch + primer + bond)
5th Gen typeSelf-etch 2-stepTotal-etch 2-step (single bottle)
6th Gen typeSelf-etch 1-stepSelf-etch 2-step
7th Gen typeUniversal adhesiveAll-in-one self-etch 1-step
7th Gen note"no MDP"Most contain MDP or equivalent functional monomer
The poster's own bottom evolution timeline is largely correct, but the main table has systematic generation-shifting errors - nearly every generation's type description appears to have been shifted by one generation, creating a cascading set of misclassifications.

Create a corrected infographic with accurate generation dates and classifications

Running Command

mkdir -p /home/daytona/workspace/dentin-bonding-infographic && ls /home/daytona/…

Writing File

~/dentin-bonding-infographic/index.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Dentin Bonding Agent – Corrected Infographic</title>
<style>
  * { margin: 0; padding: 0; box-sizing: border-box; }

  body {
    font-family: 'Segoe UI', Arial, sans-serif;
    background: #1a3a1a;
    padding: 18px;
    min-width: 1300px;
  }

  .poster {
    background: #1a3a1a;
    border: 3px solid #c8a400;
    border-radius: 10px;
    overflow: hidden;
    width: 1264px;
    margin: 0 auto;
  }

  /* ─── HEADER ─── */
  .header {
    background: #1a3a1a;
    text-align: center;
    padding: 14px 20px 0;
    color: #ffffff;
  }
  .header h1 {
    font-size: 22px;
    font-weight: 900;
    letter-spacing: 1px;
    text-transform: uppercase;
  }
  .header h2 {
    font-size: 14px;
    font-weight: 600;
    letter-spacing: 0.5px;
    margin-top: 3px;
    text-transform: uppercase;
  }
  .title-banner {
    background: #c8a400;
    color: #1a3a1a;
    font-size: 26px;
    font-weight: 900;
    letter-spacing: 3px;
    text-align: center;
    padding: 8px 0;
    margin: 10px 0 0;
    text-transform: uppercase;
    border: 2px solid #fff;
  }
  .definition-box {
    background: #e8f4e8;
    border: 2px solid #1a3a1a;
    margin: 8px 12px;
    padding: 7px 14px;
    font-size: 12.5px;
    color: #1a3a1a;
    text-align: center;
    font-weight: 600;
    border-radius: 4px;
  }

  /* ─── MAIN TABLE ─── */
  .main-table-wrap {
    margin: 0 8px 8px;
    border: 2px solid #c8a400;
    border-radius: 6px;
    overflow: hidden;
  }

  table.main-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 11.5px;
  }

  table.main-table thead tr th {
    background: #1a5c1a;
    color: #ffffff;
    text-align: center;
    padding: 7px 5px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    border: 1px solid #4a8a4a;
  }

  table.main-table tbody tr td {
    border: 1px solid #4a8a4a;
    vertical-align: top;
    padding: 7px 7px;
    line-height: 1.45;
    font-size: 11px;
  }

  table.main-table tbody tr:nth-child(even) td {
    background: #f0f7f0;
  }
  table.main-table tbody tr:nth-child(odd) td {
    background: #ffffff;
  }

  .gen-cell {
    font-weight: 900;
    font-size: 12px;
    text-align: center;
    min-width: 105px;
  }

  .type-cell {
    min-width: 110px;
    font-weight: 700;
    color: #1a3a1a;
  }

  .comp-cell {
    min-width: 180px;
    color: #1a3a1a;
  }

  .steps-cell {
    min-width: 130px;
  }

  .adv-cell {
    min-width: 155px;
  }

  .ex-cell {
    min-width: 160px;
    font-weight: 700;
    color: #1a3a1a;
  }

  ul.dot-list {
    list-style: none;
    padding: 0;
  }
  ul.dot-list li::before {
    content: "● ";
    font-size: 9px;
  }
  ul.dot-list li { margin-bottom: 2px; }

  .badge {
    display: inline-block;
    padding: 2px 7px;
    border-radius: 10px;
    font-size: 10px;
    font-weight: 700;
    margin-bottom: 3px;
  }

  /* Generation color coding */
  .g1 { color: #8B0000; }
  .g2 { color: #0000AA; }
  .g3 { color: #006600; }
  .g4 { color: #804000; }
  .g5 { color: #5500AA; }
  .g6 { color: #006666; }
  .g7 { color: #AA5500; }
  .g8 { color: #005577; }

  .badge-g1 { background:#ffe0e0; color:#8B0000; border:1px solid #8B0000; }
  .badge-g2 { background:#e0e0ff; color:#0000AA; border:1px solid #0000AA; }
  .badge-g3 { background:#e0ffe0; color:#006600; border:1px solid #006600; }
  .badge-g4 { background:#fff3e0; color:#804000; border:1px solid #804000; }
  .badge-g5 { background:#f3e0ff; color:#5500AA; border:1px solid #5500AA; }
  .badge-g6 { background:#e0ffff; color:#006666; border:1px solid #006666; }
  .badge-g7 { background:#fff0e0; color:#AA5500; border:1px solid #AA5500; }
  .badge-g8 { background:#e0f0ff; color:#005577; border:1px solid #005577; }

  /* ─── STEPS VISUAL ─── */
  .step-pills { display: flex; flex-direction: column; gap: 3px; }
  .pill {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 12px;
    font-size: 10px;
    font-weight: 700;
    text-align: center;
    color: white;
  }
  .pill-etch   { background: #e05050; }
  .pill-rinse  { background: #5080e0; }
  .pill-prime  { background: #50a050; }
  .pill-bond   { background: #c07000; }
  .pill-combo  { background: #7050b0; }
  .pill-self   { background: #007070; }
  .pill-multi  { background: #555; }

  .step-note {
    font-size: 9.5px;
    color: #555;
    font-style: italic;
    margin-top: 3px;
  }

  .step-count {
    font-weight: 900;
    font-size: 13px;
    color: #1a3a1a;
    margin-bottom: 3px;
  }

  /* ─── CORRECTION NOTE ─── */
  .correction-banner {
    background: #fff3cd;
    border: 2px solid #c8a400;
    margin: 0 8px 8px;
    padding: 7px 14px;
    font-size: 11.5px;
    color: #5a3a00;
    border-radius: 5px;
    font-weight: 600;
  }
  .correction-banner strong { color: #c00; }

  /* ─── EVOLUTION TIMELINE ─── */
  .evolution-section {
    background: #f5f5e8;
    margin: 0 8px 8px;
    border: 2px solid #c8a400;
    border-radius: 6px;
    padding: 10px 12px;
  }
  .evo-title {
    text-align: center;
    font-size: 15px;
    font-weight: 900;
    color: #1a3a1a;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 10px;
    border-bottom: 2px solid #1a3a1a;
    padding-bottom: 5px;
  }
  .evo-grid {
    display: flex;
    align-items: flex-start;
    gap: 0;
    justify-content: space-between;
  }
  .evo-card {
    flex: 1;
    text-align: center;
    padding: 6px 4px;
    border-radius: 6px;
    font-size: 9.5px;
    position: relative;
    min-width: 130px;
  }
  .evo-arrow {
    font-size: 22px;
    color: #1a3a1a;
    font-weight: 900;
    align-self: center;
    padding: 0 2px;
  }
  .evo-gen-num {
    font-size: 11px;
    font-weight: 900;
    margin-bottom: 2px;
  }
  .evo-gen-label {
    font-size: 10px;
    font-weight: 800;
    margin-bottom: 3px;
  }
  .evo-era {
    font-size: 9px;
    font-style: italic;
    margin-bottom: 3px;
    font-weight: 700;
  }
  .evo-desc {
    font-size: 9px;
    line-height: 1.35;
  }

  .ec1 { background: #ffe0e0; border: 1.5px solid #8B0000; color: #5a0000; }
  .ec2 { background: #e0e0ff; border: 1.5px solid #0000AA; color: #00004a; }
  .ec3 { background: #e0ffe0; border: 1.5px solid #006600; color: #003300; }
  .ec4 { background: #fff3e0; border: 1.5px solid #804000; color: #402000; }
  .ec5 { background: #f3e0ff; border: 1.5px solid #5500AA; color: #2a0055; }
  .ec6 { background: #e0ffff; border: 1.5px solid #006666; color: #003333; }
  .ec7 { background: #fff0e0; border: 1.5px solid #AA5500; color: #552a00; }
  .ec8 { background: #e0f0ff; border: 1.5px solid #005577; color: #002a3a; }

  /* ─── FOOTER ─── */
  .footer {
    background: #1a3a1a;
    color: #fff;
    padding: 10px 18px;
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    font-size: 10.5px;
    gap: 20px;
  }
  .footer-col { flex: 1; }
  .footer-col h4 { color: #c8a400; font-size: 11px; margin-bottom: 4px; }

  /* ─── CORRECTION CALLOUTS IN TABLE ─── */
  .corrected {
    background: #fffde0;
    border-left: 3px solid #c8a400;
    padding-left: 4px;
    font-size: 10.5px;
  }
</style>
</head>
<body>
<div class="poster">

  <!-- HEADER -->
  <div class="header">
    <h1>Index Institute of Dental Sciences</h1>
    <h2>Department of Conservative Dentistry and Endodontics</h2>
  </div>
  <div class="title-banner">DENTIN BONDING AGENT</div>
  <div class="definition-box">
    A dentin bonding agent is a material used to achieve adhesion between restorative materials and dentin
    by forming a micromechanical and/or chemical bond with the tooth structure.
  </div>

  <!-- CORRECTION NOTE -->
  <div class="correction-banner">
    ⚠️ <strong>Corrected Version</strong> — Generation eras, type classifications, and example attributions have been corrected per established literature.
    Key fixes: accurate decade assignment for each generation; correct step-system labeling (total-etch vs self-etch); NPG-GMA moved to 2nd generation; bond strength corrected for early generations.
  </div>

  <!-- MAIN TABLE -->
  <div class="main-table-wrap">
  <table class="main-table">
    <thead>
      <tr>
        <th style="width:8%">GENERATION</th>
        <th style="width:10%">TYPE</th>
        <th style="width:19%">COMPOSITION</th>
        <th style="width:14%">STEPS</th>
        <th style="width:14%">STEP COUNT &amp; MECHANISM</th>
        <th style="width:17%">ADVANTAGES / LIMITATIONS</th>
        <th style="width:18%">EXAMPLES</th>
      </tr>
    </thead>
    <tbody>

      <!-- GEN 1 -->
      <tr>
        <td class="gen-cell g1">
          <div class="badge badge-g1">1st GENERATION</div><br>
          <span class="corrected">Late 1960s–Early 1970s</span>
        </td>
        <td class="type-cell">
          Conventional adhesive<br>
          <span style="font-size:10px; color:#555;">(Enamel-only bonding)</span>
        </td>
        <td class="comp-cell">
          Polyurethanes, cyanoacrylate,<br>
          glycerophosphoric acid,<br>
          dimethacrylate
        </td>
        <td class="steps-cell">
          <div class="step-pills">
            <span class="pill pill-etch">1. Etch enamel</span>
            <span class="pill pill-bond">2. Apply adhesive</span>
          </div>
          <div class="step-note">Enamel bonding only; does not bond to dentin</div>
        </td>
        <td>
          <div class="step-count">2 Steps</div>
          Acid-etch enamel + simple adhesive resin
        </td>
        <td class="adv-cell">
          <ul class="dot-list">
            <li><span class="corrected">Very LOW bond strength (2–3 MPa)</span></li>
            <li>Frequent debonding within months</li>
            <li>Suitable only for small retentive cavities</li>
            <li>Post-op sensitivity common</li>
          </ul>
        </td>
        <td class="ex-cell">
          Cervident,<br>
          Copal varnish-based adhesives<br>
          <span class="corrected" style="font-size:9.5px;">⚠ NPG-GMA belongs to 2nd generation (see below)</span>
        </td>
      </tr>

      <!-- GEN 2 -->
      <tr>
        <td class="gen-cell g2">
          <div class="badge badge-g2">2nd GENERATION</div><br>
          <span class="corrected">Late 1970s</span>
        </td>
        <td class="type-cell">
          <span class="corrected">Chemical bond (chelation)</span><br>
          <span style="font-size:10px;color:#555;">2-step; smear layer utilized</span>
        </td>
        <td class="comp-cell">
          Halophosphorous monomers,<br>
          <span class="corrected">NPG-GMA</span>,<br>
          phosphate esters (e.g., Bis-GMA/HEMA not yet standard)
        </td>
        <td class="steps-cell">
          <div class="step-pills">
            <span class="pill pill-etch">1. Etch enamel only</span>
            <span class="pill pill-bond">2. Apply adhesive (dentin not etched)</span>
          </div>
          <div class="step-note">Chelation to calcium of dentin through smear layer</div>
        </td>
        <td>
          <div class="step-count">2 Steps</div>
          Chemical chelation to dentin calcium; smear layer left intact
        </td>
        <td class="adv-cell">
          <ul class="dot-list">
            <li>Low bond strength (1–3 MPa)</li>
            <li>Frequent interfacial failure</li>
            <li>Introduced concept of dentin adhesion</li>
          </ul>
        </td>
        <td class="ex-cell">
          <span class="corrected">NPG-GMA (Scotchbond 1st iteration),<br>Clearfil Bond System F</span>
        </td>
      </tr>

      <!-- GEN 3 -->
      <tr>
        <td class="gen-cell g3">
          <div class="badge badge-g3">3rd GENERATION</div><br>
          <span class="corrected">Late 1970s – Late 1980s</span>
        </td>
        <td class="type-cell">
          <span class="corrected">Smear layer modifier<br>(3-step; separate enamel &amp; dentin bonding)</span>
        </td>
        <td class="comp-cell">
          Separate etchant, conditioner/primer<br>
          and bonding resin;<br>
          acidic primers, HEMA,<br>
          increased hydrophilic monomers
        </td>
        <td class="steps-cell">
          <div class="step-pills">
            <span class="pill pill-etch">1. Etch (separate etchant)</span>
            <span class="pill pill-prime">2. Primer / conditioner</span>
            <span class="pill pill-bond">3. Bonding resin</span>
          </div>
          <div class="step-note">Partial smear layer removal; early dentin priming</div>
        </td>
        <td>
          <div class="step-count">3 Steps</div>
          Separate agents for enamel and dentin; partial smear layer removal
        </td>
        <td class="adv-cell">
          <ul class="dot-list">
            <li>Improved dentin bond vs 1st/2nd gen</li>
            <li>First use of dentin primer</li>
            <li>Bond strength ~8–15 MPa</li>
            <li>Technique-sensitive</li>
          </ul>
        </td>
        <td class="ex-cell">
          Scotchbond 2,<br>Gluma,<br>Tenure
        </td>
      </tr>

      <!-- GEN 4 -->
      <tr>
        <td class="gen-cell g4">
          <div class="badge badge-g4">4th GENERATION</div><br>
          <span class="corrected">Mid–Late 1980s</span>
        </td>
        <td class="type-cell">
          <span class="corrected">Total-etch 3-step system<br>(Gold Standard)</span>
        </td>
        <td class="comp-cell">
          37% phosphoric acid (etchant),<br>
          HEMA, TEGDMA dissolved in<br>
          ethanol/acetone/water;<br>
          Bis-GMA, hydrophobic bonding resin
        </td>
        <td class="steps-cell">
          <div class="step-pills">
            <span class="pill pill-etch">1. Etch (37% H₃PO₄)</span>
            <span class="pill pill-prime">2. Primer (separate)</span>
            <span class="pill pill-bond">3. Bonding resin (separate)</span>
          </div>
          <div class="step-note">Total-etch of enamel AND dentin; true hybrid layer formation</div>
        </td>
        <td>
          <div class="step-count">3 Steps</div>
          Total-etch (enamel + dentin); complete smear layer removal; hybrid layer
        </td>
        <td class="adv-cell">
          <ul class="dot-list">
            <li>Highest bond strength (17–25 MPa)</li>
            <li>True hybrid layer formation</li>
            <li>Bonds to moist dentin</li>
            <li>Applicable to porcelain &amp; alloys</li>
            <li>Technique-sensitive (moisture control)</li>
          </ul>
        </td>
        <td class="ex-cell">
          Scotchbond Multipurpose (3M),<br>
          All-Bond 2 (Bisco),<br>
          OptiBond FL (Kerr),<br>
          Clearfil Liner Bond 2
        </td>
      </tr>

      <!-- GEN 5 -->
      <tr>
        <td class="gen-cell g5">
          <div class="badge badge-g5">5th GENERATION</div><br>
          <span class="corrected">Early 1990s</span>
        </td>
        <td class="type-cell">
          <span class="corrected">Total-etch 2-step system<br>(Single-bottle)</span>
        </td>
        <td class="comp-cell">
          HEMA, Bis-GMA, Acetone,<br>
          ethanol and water;<br>
          Photoinitiators;<br>
          Primer + adhesive combined in one bottle
        </td>
        <td class="steps-cell">
          <div class="step-pills">
            <span class="pill pill-etch">1. Etch (37% H₃PO₄, rinse off)</span>
            <span class="pill pill-combo">2. Single-bottle primer + bond</span>
          </div>
          <div class="step-note">Total-etch retained; primer and adhesive combined; simpler than 4th gen</div>
        </td>
        <td>
          <div class="step-count">2 Steps</div>
          <span class="corrected">Total-etch + single-bottle primer-adhesive (NOT self-etch)</span>
        </td>
        <td class="adv-cell">
          <ul class="dot-list">
            <li>Fewer steps than 4th gen</li>
            <li>Good bond strength (17–22 MPa)</li>
            <li>Less technique-sensitive</li>
            <li>Still requires rinsing after etch</li>
          </ul>
        </td>
        <td class="ex-cell">
          Single Bond (3M),<br>
          Prime &amp; Bond NT (Dentsply),<br>
          One-Step (Bisco),<br>
          OptiBond Solo Plus
        </td>
      </tr>

      <!-- GEN 6 -->
      <tr>
        <td class="gen-cell g6">
          <div class="badge badge-g6">6th GENERATION</div><br>
          <span class="corrected">Mid–Late 1990s – Early 2000s</span>
        </td>
        <td class="type-cell">
          <span class="corrected">Self-etch 2-step system</span><br>
          <span style="font-size:10px;color:#555;">Self-etching primer + bonding resin</span>
        </td>
        <td class="comp-cell">
          Acidic methacrylate monomers (self-etching primer),<br>
          HEMA, Bis-GMA or UDMA,<br>
          Water, Acetone/ethanol,<br>
          Photoinitiator, Fluoride
        </td>
        <td class="steps-cell">
          <div class="step-pills">
            <span class="pill pill-self">1. Self-etch primer (no rinse)</span>
            <span class="pill pill-bond">2. Bonding resin</span>
          </div>
          <div class="step-note">No separate phosphoric acid; smear layer incorporated; no rinsing needed</div>
        </td>
        <td>
          <div class="step-count">2 Steps</div>
          <span class="corrected">Self-etch primer then separate bonding resin (NOT 1-step all-in-one)</span>
        </td>
        <td class="adv-cell">
          <ul class="dot-list">
            <li>No separate etch/rinse needed</li>
            <li>Reduced post-op sensitivity</li>
            <li>Less technique-sensitive</li>
            <li>Bond strength ~18–20 MPa</li>
            <li>Enamel bonding slightly weaker</li>
          </ul>
        </td>
        <td class="ex-cell">
          Clearfil SE Bond (Kuraray),<br>
          AdheSE (Ivoclar),<br>
          OptiBond Solo Plus SE
        </td>
      </tr>

      <!-- GEN 7 -->
      <tr>
        <td class="gen-cell g7">
          <div class="badge badge-g7">7th GENERATION</div><br>
          <span class="corrected">Early–Mid 2000s</span>
        </td>
        <td class="type-cell">
          <span class="corrected">Self-etch 1-step system<br>(All-in-One)</span>
        </td>
        <td class="comp-cell">
          Acidic monomers (MDP or similar),<br>
          hydrophilic &amp; hydrophobic resins,<br>
          water, volatile organic solvents;<br>
          all components in a single bottle
        </td>
        <td class="steps-cell">
          <div class="step-pills">
            <span class="pill pill-self">1. Apply all-in-one adhesive (no rinse)</span>
          </div>
          <div class="step-note">Single application; etch + prime + bond in one bottle; light cure</div>
        </td>
        <td>
          <div class="step-count">1 Step</div>
          <span class="corrected">All-in-one self-etch (NOT "universal"; contains MDP functional monomer)</span>
        </td>
        <td class="adv-cell">
          <ul class="dot-list">
            <li>Simplest technique</li>
            <li>Fewest steps</li>
            <li>Reduced chair time</li>
            <li>Good patient comfort</li>
            <li>Moderate bond strength</li>
          </ul>
        </td>
        <td class="ex-cell">
          G-Bond (GC),<br>
          iBond (Heraeus),<br>
          Xeno III (Dentsply),<br>
          Clearfil S³ Bond
        </td>
      </tr>

      <!-- GEN 8 -->
      <tr>
        <td class="gen-cell g8">
          <div class="badge badge-g8">8th GENERATION</div><br>
          <span class="corrected">2010s–Present</span>
        </td>
        <td class="type-cell">
          Universal / Multi-mode adhesive<br>
          <span style="font-size:10px;color:#555;">(Advanced universal)</span>
        </td>
        <td class="comp-cell">
          10-MDA / MDP, HEMA, Bis-GMA,<br>
          Dimethacrylates, PAC,<br>
          Water, SiO₂ nanoparticles,<br>
          CQ, Ethanol;<br>
          Bioactive / remineralizing components
        </td>
        <td class="steps-cell">
          <div class="step-pills">
            <span class="pill pill-multi">Multiple modes:</span>
            <span class="pill pill-etch">Etch &amp; Rinse mode</span>
            <span class="pill pill-self">Self-Etch mode</span>
            <span class="pill pill-combo">Selective-Etch mode</span>
          </div>
          <div class="step-note">Clinician selects mode per case; compatible with all techniques</div>
        </td>
        <td>
          <div class="step-count">1–3 Steps</div>
          Multi-mode; works in total-etch, self-etch, or selective-etch; bioactive potential
        </td>
        <td class="adv-cell">
          <ul class="dot-list">
            <li>Bioactive &amp; reparative potential</li>
            <li>Excellent durability</li>
            <li>Reduced post-op sensitivity</li>
            <li>Highly versatile</li>
            <li>Compatible with all substrates</li>
          </ul>
        </td>
        <td class="ex-cell">
          Scotchbond Universal Plus (3M),<br>
          Clearfil Universal Bond Quick (Kuraray),<br>
          G-Premio Bond (GC)
        </td>
      </tr>

    </tbody>
  </table>
  </div>

  <!-- EVOLUTION TIMELINE -->
  <div class="evolution-section">
    <div class="evo-title">Evolution of Dentin Bonding Agents — 8 Generations (Corrected Timeline)</div>
    <div class="evo-grid">

      <div class="evo-card ec1">
        <div class="evo-gen-num">Gen 1</div>
        <div class="evo-gen-label">Enamel Adhesion</div>
        <div class="evo-era">Late 1960s – Early 1970s</div>
        <div class="evo-desc">Acid-etch enamel + simple adhesive resin. 2-step. Very low bond strength. No dentin bonding.</div>
      </div>

      <div class="evo-arrow">→</div>

      <div class="evo-card ec2">
        <div class="evo-gen-num">Gen 2</div>
        <div class="evo-gen-label">Chemical Bond</div>
        <div class="evo-era">Late 1970s</div>
        <div class="evo-desc">NPG-GMA. Chelation to dentin calcium. 2-step. Smear layer left intact. Low bond strength (1–3 MPa).</div>
      </div>

      <div class="evo-arrow">→</div>

      <div class="evo-card ec3">
        <div class="evo-gen-num">Gen 3</div>
        <div class="evo-gen-label">Smear Layer Primer</div>
        <div class="evo-era">Late 1970s – Late 1980s</div>
        <div class="evo-desc">Separate etchant + primer + adhesive. 3-step. Partial smear layer removal. Scotchbond 2, Gluma.</div>
      </div>

      <div class="evo-arrow">→</div>

      <div class="evo-card ec4">
        <div class="evo-gen-num">Gen 4</div>
        <div class="evo-gen-label">Hybrid Layer<br>(Total-Etch 3-step)</div>
        <div class="evo-era">Mid–Late 1980s</div>
        <div class="evo-desc">37% H₃PO₄ + Primer + Bond (3 bottles). Complete smear layer removal. Highest bond strength (17–25 MPa). Gold standard.</div>
      </div>

      <div class="evo-arrow">→</div>

      <div class="evo-card ec5">
        <div class="evo-gen-num">Gen 5</div>
        <div class="evo-gen-label">Total-Etch &amp; Rinse<br>(2-step)</div>
        <div class="evo-era">Early 1990s</div>
        <div class="evo-desc">Etch + rinse + single-bottle primer-adhesive. 2-step. Single Bond, Prime &amp; Bond NT.</div>
      </div>

      <div class="evo-arrow">→</div>

      <div class="evo-card ec6">
        <div class="evo-gen-num">Gen 6</div>
        <div class="evo-gen-label">Self-Etch (2-step)</div>
        <div class="evo-era">Mid 1990s – Early 2000s</div>
        <div class="evo-desc">Self-etch primer + bonding resin. 2-step. No rinsing. Clearfil SE Bond.</div>
      </div>

      <div class="evo-arrow">→</div>

      <div class="evo-card ec7">
        <div class="evo-gen-num">Gen 7</div>
        <div class="evo-gen-label">Self-Etch (1-step<br>All-in-One)</div>
        <div class="evo-era">Early–Mid 2000s</div>
        <div class="evo-desc">Single bottle: etch + prime + bond. 1-step. Contains MDP monomer. G-Bond, iBond, Xeno III.</div>
      </div>

      <div class="evo-arrow">→</div>

      <div class="evo-card ec8">
        <div class="evo-gen-num">Gen 8</div>
        <div class="evo-gen-label">Universal Bond<br>(Multi-mode)</div>
        <div class="evo-era">2010s–Present</div>
        <div class="evo-desc">Multi-mode (total/self/selective etch). Single bottle with MDP. Bioactive. Scotchbond Universal Plus, G-Premio Bond.</div>
      </div>

    </div>
  </div>

  <!-- FOOTER -->
  <div class="footer">
    <div class="footer-col">
      <h4>GUIDED BY</h4>
      <div>Dr. Suparna G. Saha</div>
      <div>Dr. Aruna Kanaparthy</div>
      <div>Dr. Shefali Singh</div>
    </div>
    <div class="footer-col">
      <h4>PRESENTED BY</h4>
      <div>Dr. Shakti Singh &nbsp;|&nbsp; Dr. Katya Pandey</div>
      <div>Dr. Ankita Grace Lal &nbsp;|&nbsp; Dr. Mrinalini Chaddha</div>
    </div>
    <div class="footer-col">
      <h4>STUDENTS</h4>
      <div>Taniya Sirodiya (22059) &nbsp;·&nbsp; Vidyut Parmar (22062)</div>
      <div>Vanshika Patidar (22060) &nbsp;·&nbsp; Vijeta Patil (22063)</div>
      <div>Tanishka Soni (22058) &nbsp;·&nbsp; Vanshita Gupta (22061)</div>
      <div>Shweta Kumari (22057) &nbsp;·&nbsp; Yashi Sharma (22064)</div>
    </div>
    <div class="footer-col" style="font-size:9px; color:#aaa; text-align:right; align-self:flex-end;">
      Index Institute of Dental Sciences<br>
      Dept. of Conservative Dentistry &amp; Endodontics<br>
      <strong style="color:#c8a400;">CORRECTED VERSION</strong>
    </div>
  </div>

</div>
</body>
</html>
Running Command

which wkhtmltoimage wkhtmltopdf chromium-browser google-chrome puppeteer 2>/dev/…

Running Command

python3 -c "import playwright; print('playwright ok')" 2>/dev/null || echo "no p…

Running Command

python3 -c " from PIL import Image, ImageDraw, ImageFont print('PIL available') …

Writing File

~/dentin-bonding-infographic/generate_infographic.py

#!/usr/bin/env python3
"""
Generate Corrected Dentin Bonding Agent Infographic as PDF using ReportLab.
"""
from reportlab.lib.pagesizes import A3, landscape
from reportlab.lib import colors
from reportlab.lib.units import mm, inch
from reportlab.platypus import (
    SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer,
    HRFlowable, KeepTogether
)
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_RIGHT
from reportlab.platypus.flowables import HRFlowable

# ─── COLORS ───────────────────────────────────────────────────────────────────
DARK_GREEN   = colors.HexColor('#1a3a1a')
MEDIUM_GREEN = colors.HexColor('#1a5c1a')
LIGHT_GREEN  = colors.HexColor('#e0f2e0')
GOLD         = colors.HexColor('#c8a400')
LIGHT_YELLOW = colors.HexColor('#fffde0')
OFF_WHITE    = colors.HexColor('#f9f9f9')
WHITE        = colors.white
RED_DARK     = colors.HexColor('#8B0000')
BLUE_DARK    = colors.HexColor('#0000AA')
GREEN_DARK   = colors.HexColor('#006600')
BROWN        = colors.HexColor('#804000')
PURPLE       = colors.HexColor('#5500AA')
TEAL         = colors.HexColor('#006666')
ORANGE       = colors.HexColor('#AA5500')
STEEL_BLUE   = colors.HexColor('#005577')
WARN_BG      = colors.HexColor('#fff3cd')
WARN_FG      = colors.HexColor('#5a3a00')
CORR_BG      = colors.HexColor('#fffde0')

# Lighter backgrounds
BG_G1 = colors.HexColor('#fff0f0')
BG_G2 = colors.HexColor('#f0f0ff')
BG_G3 = colors.HexColor('#f0fff0')
BG_G4 = colors.HexColor('#fff9f0')
BG_G5 = colors.HexColor('#f9f0ff')
BG_G6 = colors.HexColor('#f0ffff')
BG_G7 = colors.HexColor('#fff8f0')
BG_G8 = colors.HexColor('#f0f8ff')

PAGE = landscape(A3)
W, H = PAGE

# ─── STYLES ───────────────────────────────────────────────────────────────────
styles = getSampleStyleSheet()

def PS(name, parent='Normal', **kwargs):
    return ParagraphStyle(name, parent=styles[parent], **kwargs)

title_style = PS('Title', 'Normal',
    fontName='Helvetica-Bold', fontSize=20, textColor=WHITE,
    alignment=TA_CENTER, spaceAfter=2)

subtitle_style = PS('Subtitle', 'Normal',
    fontName='Helvetica-Bold', fontSize=11, textColor=WHITE,
    alignment=TA_CENTER, spaceAfter=2)

banner_style = PS('Banner', 'Normal',
    fontName='Helvetica-Bold', fontSize=22, textColor=DARK_GREEN,
    alignment=TA_CENTER, spaceAfter=3, spaceBefore=3)

defn_style = PS('Defn', 'Normal',
    fontName='Helvetica-Bold', fontSize=10, textColor=DARK_GREEN,
    alignment=TA_CENTER, spaceAfter=4)

warn_style = PS('Warn', 'Normal',
    fontName='Helvetica-BoldOblique', fontSize=8.5, textColor=WARN_FG,
    alignment=TA_LEFT)

hdr_style = PS('Hdr', 'Normal',
    fontName='Helvetica-Bold', fontSize=9, textColor=WHITE,
    alignment=TA_CENTER)

cell_bold = PS('CellBold', 'Normal',
    fontName='Helvetica-Bold', fontSize=8.5, textColor=DARK_GREEN,
    leading=11)

cell_norm = PS('CellNorm', 'Normal',
    fontName='Helvetica', fontSize=8, textColor=colors.black,
    leading=11)

cell_corr = PS('CellCorr', 'Normal',
    fontName='Helvetica-BoldOblique', fontSize=8, textColor=colors.HexColor('#8B0000'),
    leading=10)

cell_small = PS('CellSmall', 'Normal',
    fontName='Helvetica', fontSize=7.5, textColor=colors.HexColor('#333333'),
    leading=10)

gen_label = PS('GenLabel', 'Normal',
    fontName='Helvetica-Bold', fontSize=9.5,
    alignment=TA_CENTER)

gen_era = PS('GenEra', 'Normal',
    fontName='Helvetica-BoldOblique', fontSize=8,
    alignment=TA_CENTER)

evo_title_style = PS('EvoTitle', 'Normal',
    fontName='Helvetica-Bold', fontSize=13, textColor=DARK_GREEN,
    alignment=TA_CENTER, spaceAfter=4, spaceBefore=4)

evo_num = PS('EvoNum', 'Normal',
    fontName='Helvetica-Bold', fontSize=9.5,
    alignment=TA_CENTER)
evo_lbl = PS('EvoLbl', 'Normal',
    fontName='Helvetica-Bold', fontSize=8.5,
    alignment=TA_CENTER)
evo_era_s = PS('EvoEra', 'Normal',
    fontName='Helvetica-Oblique', fontSize=7.5,
    alignment=TA_CENTER)
evo_desc_s = PS('EvoDesc', 'Normal',
    fontName='Helvetica', fontSize=7,
    alignment=TA_CENTER, leading=9)

foot_style = PS('Foot', 'Normal',
    fontName='Helvetica', fontSize=8.5, textColor=WHITE, leading=12)
foot_hdr = PS('FootHdr', 'Normal',
    fontName='Helvetica-Bold', fontSize=9.5, textColor=GOLD, leading=13)

# ─── HELPERS ──────────────────────────────────────────────────────────────────
def P(text, style):
    return Paragraph(text, style)

def bullet_para(items, style, bullet='•'):
    lines = [f'{bullet} {item}' for item in items]
    return Paragraph('<br/>'.join(lines), style)

def steps_para(steps, style):
    colored_steps = []
    pill_colors = {
        'Etch': '#e05050', 'Rinse': '#3366cc', 'Primer': '#3a8a3a',
        'Bond': '#c07000', 'Self': '#007070', 'Single': '#7050b0',
        'Apply': '#007070', 'Multiple': '#555555', 'No': '#555555',
    }
    for step in steps:
        first_word = step.split()[0] if step.split() else ''
        c = pill_colors.get(first_word, '#555555')
        colored_steps.append(f'<font color="{c}"><b>{step}</b></font>')
    return Paragraph('<br/>'.join(colored_steps), style)

# ─── DATA ─────────────────────────────────────────────────────────────────────
GENERATIONS = [
    {
        'num': '1st GENERATION',
        'era': 'Late 1960s–Early 1970s',
        'era_correct': True,
        'bg': BG_G1,
        'color': RED_DARK,
        'type': 'Conventional adhesive\n(Enamel-only bonding)',
        'composition': 'Polyurethanes, cyanoacrylate,\nglycero-phosphoric acid,\ndimethacrylate',
        'steps': ['1. Etch enamel', '2. Apply adhesive resin'],
        'step_note': '2 steps. Enamel-only; no dentin bonding',
        'advantages': ['Very LOW bond strength (2–3 MPa) ⚠', 'Frequent debonding within months', 'Suitable for small retentive cavities only', 'Post-op sensitivity common'],
        'examples': 'Cervident,\ncopal varnish-based adhesives\n[NPG-GMA = 2nd generation ⚠]',
        'corrected_fields': ['era', 'advantages', 'examples'],
    },
    {
        'num': '2nd GENERATION',
        'era': 'Late 1970s',
        'era_correct': True,
        'bg': BG_G2,
        'color': BLUE_DARK,
        'type': 'Chemical bond (chelation)\n2-step; smear layer utilized',
        'composition': 'Halophosphorous monomers,\nNPG-GMA (key component),\nphosphate esters',
        'steps': ['1. Etch enamel only', '2. Apply adhesive (dentin not etched)'],
        'step_note': '2 steps. Chelation to dentin calcium through intact smear layer',
        'advantages': ['Low bond strength (1–3 MPa)', 'Frequent interfacial failure', 'Introduced concept of dentin adhesion'],
        'examples': 'NPG-GMA (Scotchbond 1st),\nClearfil Bond System F',
        'corrected_fields': ['era', 'type'],
    },
    {
        'num': '3rd GENERATION',
        'era': 'Late 1970s–Late 1980s',
        'era_correct': True,
        'bg': BG_G3,
        'color': GREEN_DARK,
        'type': 'Smear layer modifier\n3-step; separate enamel & dentin bonding',
        'composition': 'Separate etchant + conditioner/primer\n+ bonding resin;\nHEMA, increased hydrophilic monomers',
        'steps': ['1. Etch (separate etchant)', '2. Primer / conditioner', '3. Bonding resin'],
        'step_note': '3 steps. Partial smear layer removal; early dentin priming',
        'advantages': ['Bond strength ~8–15 MPa', 'First use of dedicated dentin primer', 'Improved dentin adhesion vs 1st/2nd gen', 'Still technique-sensitive'],
        'examples': 'Scotchbond 2, Gluma, Tenure',
        'corrected_fields': ['era', 'type'],
    },
    {
        'num': '4th GENERATION',
        'era': 'Mid–Late 1980s',
        'era_correct': True,
        'bg': BG_G4,
        'color': BROWN,
        'type': 'Total-etch 3-step system\n(GOLD STANDARD)',
        'composition': '37% phosphoric acid (etchant),\nHEMA, TEGDMA in ethanol/acetone,\nBis-GMA, hydrophobic bonding resin',
        'steps': ['1. Etch (37% H₃PO₄, rinse off)', '2. Primer (separate)', '3. Bonding resin (separate)'],
        'step_note': '3 steps. Total-etch enamel + dentin; full smear layer removal; true hybrid layer',
        'advantages': ['Highest bond strength (17–25 MPa)', 'True hybrid layer formation', 'Bonds to moist dentin', 'Compatible with porcelain & alloys'],
        'examples': 'Scotchbond Multipurpose (3M),\nAll-Bond 2 (Bisco),\nOptiBond FL (Kerr),\nClearfil Liner Bond 2',
        'corrected_fields': ['era', 'type'],
    },
    {
        'num': '5th GENERATION',
        'era': 'Early 1990s',
        'era_correct': True,
        'bg': BG_G5,
        'color': PURPLE,
        'type': 'Total-etch 2-step system\n(Single-bottle primer-adhesive)',
        'composition': 'HEMA, Bis-GMA, acetone,\nethanol & water;\nPhotoinitiators;\nPrimer + adhesive in one bottle',
        'steps': ['1. Etch (37% H₃PO₄, rinse off)', '2. Single-bottle primer + adhesive'],
        'step_note': '2 steps. Total-etch retained; primer & bond combined. NOT self-etch ⚠',
        'advantages': ['Fewer steps than 4th gen', 'Good bond strength (17–22 MPa)', 'Less technique-sensitive', 'Requires rinsing after etch'],
        'examples': 'Single Bond (3M),\nPrime & Bond NT (Dentsply),\nOne-Step (Bisco),\nOptiBond Solo Plus',
        'corrected_fields': ['era', 'type'],
    },
    {
        'num': '6th GENERATION',
        'era': 'Mid 1990s–Early 2000s',
        'era_correct': True,
        'bg': BG_G6,
        'color': TEAL,
        'type': 'Self-etch 2-step system\n(Self-etch primer + bonding resin)',
        'composition': 'Acidic methacrylate monomers\n(self-etching primer),\nHEMA, Bis-GMA or UDMA,\nWater, acetone/ethanol,\nPhotoinitiator, Fluoride',
        'steps': ['1. Self-etch primer (no rinse)', '2. Bonding resin (separate)'],
        'step_note': '2 steps. No phosphoric acid; smear layer incorporated; no rinsing. NOT 1-step ⚠',
        'advantages': ['No separate etch/rinse', 'Reduced post-op sensitivity', 'Bond strength ~18–20 MPa', 'Enamel bonding slightly weaker than total-etch'],
        'examples': 'Clearfil SE Bond (Kuraray),\nAdheSE (Ivoclar),\nOptiBond Solo Plus SE',
        'corrected_fields': ['era', 'type'],
    },
    {
        'num': '7th GENERATION',
        'era': 'Early–Mid 2000s',
        'era_correct': True,
        'bg': BG_G7,
        'color': ORANGE,
        'type': 'Self-etch 1-step system\n(All-in-One; single bottle)',
        'composition': 'Acidic monomers (MDP or similar),\nhydrophilic & hydrophobic resins,\nwater, volatile organic solvents;\nall components in single bottle',
        'steps': ['1. Apply all-in-one adhesive (no rinse)'],
        'step_note': '1 step. Etch + prime + bond in one bottle; light cure. Contains MDP monomer ⚠',
        'advantages': ['Simplest technique; fewest steps', 'Reduced chair time', 'Good patient comfort', 'Moderate bond strength'],
        'examples': 'G-Bond (GC),\niBond (Heraeus),\nXeno III (Dentsply),\nClearfil S³ Bond',
        'corrected_fields': ['era', 'type'],
    },
    {
        'num': '8th GENERATION',
        'era': '2010s–Present',
        'era_correct': True,
        'bg': BG_G8,
        'color': STEEL_BLUE,
        'type': 'Universal / Multi-mode adhesive\n(Advanced universal)',
        'composition': '10-MDP, HEMA, Bis-GMA,\nDimethacrylates, PAC,\nWater, SiO₂ nanoparticles,\nCQ, Ethanol;\nbioactive components',
        'steps': ['Multiple modes:', '• Etch & Rinse mode', '• Self-Etch mode', '• Selective-Etch mode'],
        'step_note': '1–3 steps depending on mode. Clinician selects per case',
        'advantages': ['Bioactive & reparative potential', 'Excellent durability', 'Reduced post-op sensitivity', 'Highly versatile; all substrates'],
        'examples': 'Scotchbond Universal Plus (3M),\nClearfil Universal Bond Quick,\nG-Premio Bond (GC)',
        'corrected_fields': [],
    },
]

# ─── BUILD TABLE DATA ─────────────────────────────────────────────────────────
def build_table():
    # Column headers
    header_data = [
        P('GENERATION', hdr_style),
        P('TYPE', hdr_style),
        P('COMPOSITION', hdr_style),
        P('STEPS', hdr_style),
        P('STEP COUNT & MECHANISM', hdr_style),
        P('ADVANTAGES / LIMITATIONS', hdr_style),
        P('EXAMPLES', hdr_style),
    ]

    rows = [header_data]
    row_styles = []  # (bg_color, row_index)

    for i, g in enumerate(GENERATIONS):
        ri = i + 1  # +1 for header row

        # Gen cell
        gen_lbl_p = P(f'<b>{g["num"]}</b>', ParagraphStyle('gl', parent=gen_label,
            textColor=g['color'], fontSize=9.5))
        era_style = ParagraphStyle('ge', parent=gen_era,
            textColor=RED_DARK if g['era_correct'] and 'era' in g.get('corrected_fields',[]) else g['color'],
            fontSize=8)
        era_prefix = '✔ ' if g['era_correct'] else ''
        era_p = P(f'<b>{era_prefix}{g["era"]}</b>', era_style)

        # Type cell
        type_lines = g['type'].split('\n')
        type_p = Paragraph(
            '<b>' + type_lines[0] + '</b>' +
            ('<br/><font size="7" color="#555555">' + '<br/>'.join(type_lines[1:]) + '</font>'
             if len(type_lines) > 1 else ''),
            cell_bold
        )

        # Composition
        comp_p = Paragraph(g['composition'].replace('\n', '<br/>'), cell_norm)

        # Steps
        step_lines = []
        for s in g['steps']:
            if s.startswith('•'):
                step_lines.append(f'<font color="#555555">{s}</font>')
            elif s.endswith(':'):
                step_lines.append(f'<b>{s}</b>')
            else:
                step_lines.append(f'<b>{s}</b>')
        step_p = Paragraph('<br/>'.join(step_lines), cell_norm)
        note_p = Paragraph(f'<i><font size="7" color="#555">{g["step_note"]}</font></i>', cell_small)

        # Advantages
        adv_lines = ['• ' + a for a in g['advantages']]
        adv_p = Paragraph('<br/>'.join(adv_lines), cell_norm)

        # Examples
        ex_p = Paragraph('<b>' + g['examples'].replace('\n', '<br/>') + '</b>', cell_bold)

        row = [
            [gen_lbl_p, era_p],
            type_p,
            comp_p,
            [step_p, note_p],
            note_p,  # reuse note as step-count col placeholder (replaced below)
            adv_p,
            ex_p,
        ]

        # Actually build step count separately
        sc_text = g['step_note']
        sc_p = Paragraph(f'<b><font size="9" color="{g["color"].hexval() if hasattr(g["color"],"hexval") else "#1a3a1a"}">{sc_text.split(".")[0]}.</font></b><br/>'
                         + '.'.join(sc_text.split('.')[1:]) if '.' in sc_text else sc_text,
                         cell_norm)

        row_final = [
            [gen_lbl_p, era_p],
            type_p,
            comp_p,
            step_p,
            sc_p,
            adv_p,
            ex_p,
        ]

        rows.append(row_final)
        row_styles.append((g['bg'], ri))

    return rows, row_styles

# ─── EVOLUTION TIMELINE TABLE ─────────────────────────────────────────────────
EVO_DATA = [
    ('Gen 1', 'Enamel\nAdhesion', 'Late 1960s–\nEarly 1970s', 'Acid-etch enamel + simple adhesive. 2-step. Very low bond strength (2–3 MPa). No dentin bonding.', BG_G1, RED_DARK),
    ('Gen 2', 'Chemical\nBond', 'Late 1970s', 'NPG-GMA. Chelation to dentin calcium. 2-step. Smear layer intact. Low bond strength.', BG_G2, BLUE_DARK),
    ('Gen 3', 'Smear Layer\nPrimer', 'Late 1970s–\nLate 1980s', 'Etch + primer + bond. 3-step. Partial smear removal. Scotchbond 2, Gluma.', BG_G3, GREEN_DARK),
    ('Gen 4', 'Hybrid Layer\n(Total-Etch 3-step)', 'Mid–Late 1980s', '37% H₃PO₄ + Primer + Bond. Full smear layer removal. Hybrid layer. Highest bond (17–25 MPa). Gold standard.', BG_G4, BROWN),
    ('Gen 5', 'Total-Etch\n& Rinse (2-step)', 'Early 1990s', 'Etch + rinse + single-bottle primer-adhesive. 2-step. Single Bond, Prime & Bond NT.', BG_G5, PURPLE),
    ('Gen 6', 'Self-Etch\n(2-step)', 'Mid 1990s–\nEarly 2000s', 'Self-etch primer + bonding resin. 2-step. No rinsing. Clearfil SE Bond, AdheSE.', BG_G6, TEAL),
    ('Gen 7', 'Self-Etch\n(1-step All-in-One)', 'Early–Mid 2000s', 'Single bottle: etch + prime + bond. 1-step. Contains MDP monomer. G-Bond, iBond, Xeno III.', BG_G7, ORANGE),
    ('Gen 8', 'Universal Bond\n(Multi-mode)', '2010s–Present', 'Multi-mode (total/self/selective etch). Single bottle + MDP. Bioactive. Scotchbond Universal Plus, G-Premio Bond.', BG_G8, STEEL_BLUE),
]

def build_evo_table():
    rows = []
    for num, lbl, era, desc, bg, col in EVO_DATA:
        cell_content = [
            P(f'<b>{num}</b>', ParagraphStyle('en', parent=evo_num, textColor=col)),
            P(f'<b>{lbl}</b>', ParagraphStyle('el', parent=evo_lbl, textColor=col)),
            P(era, ParagraphStyle('ee', parent=evo_era_s, textColor=col)),
            P(desc, evo_desc_s),
        ]
        rows.append(cell_content)
    return rows

# ─── MAIN DOCUMENT ────────────────────────────────────────────────────────────
def build_pdf(output_path):
    from reportlab.platypus import BaseDocTemplate, Frame, PageTemplate
    from reportlab.platypus import NextPageTemplate
    import reportlab.platypus as plat

    doc = SimpleDocTemplate(
        output_path,
        pagesize=PAGE,
        leftMargin=12*mm, rightMargin=12*mm,
        topMargin=10*mm, bottomMargin=10*mm,
        title='Dentin Bonding Agent – Corrected Infographic',
    )

    story = []

    # ── HEADER BLOCK ──
    # Use a table to create dark green header
    header_table_data = [[
        P('INDEX INSTITUTE OF DENTAL SCIENCES', title_style),
    ], [
        P('DEPARTMENT OF CONSERVATIVE DENTISTRY AND ENDODONTICS', subtitle_style),
    ]]
    ht = Table(header_table_data, colWidths=[W - 24*mm])
    ht.setStyle(TableStyle([
        ('BACKGROUND', (0,0), (-1,-1), DARK_GREEN),
        ('ALIGN', (0,0), (-1,-1), 'CENTER'),
        ('TOPPADDING', (0,0), (-1,-1), 6),
        ('BOTTOMPADDING', (0,0), (-1,-1), 4),
    ]))
    story.append(ht)

    # Title banner
    banner_data = [[P('DENTIN BONDING AGENT', banner_style)]]
    bt = Table(banner_data, colWidths=[W - 24*mm])
    bt.setStyle(TableStyle([
        ('BACKGROUND', (0,0), (-1,-1), GOLD),
        ('ALIGN', (0,0), (-1,-1), 'CENTER'),
        ('TOPPADDING', (0,0), (-1,-1), 6),
        ('BOTTOMPADDING', (0,0), (-1,-1), 6),
        ('BOX', (0,0), (-1,-1), 1.5, DARK_GREEN),
    ]))
    story.append(bt)
    story.append(Spacer(1, 3*mm))

    # Definition box
    defn_data = [[P('A dentin bonding agent is a material used to achieve adhesion between restorative materials and dentin<br/>by forming a micromechanical and/or chemical bond with the tooth structure.', defn_style)]]
    dt = Table(defn_data, colWidths=[W - 24*mm])
    dt.setStyle(TableStyle([
        ('BACKGROUND', (0,0), (-1,-1), LIGHT_GREEN),
        ('BOX', (0,0), (-1,-1), 1.5, DARK_GREEN),
        ('TOPPADDING', (0,0), (-1,-1), 5),
        ('BOTTOMPADDING', (0,0), (-1,-1), 5),
        ('LEFTPADDING', (0,0), (-1,-1), 10),
        ('RIGHTPADDING', (0,0), (-1,-1), 10),
    ]))
    story.append(dt)
    story.append(Spacer(1, 2*mm))

    # Correction warning
    warn_data = [[P('⚠  CORRECTED VERSION — Generation eras, type classifications, step counts, and example attributions corrected per established literature. '
                    'Key fixes: accurate decade assignment; correct step-system labels (total-etch vs self-etch); '
                    'NPG-GMA moved to 2nd generation; bond strength corrected for early generations; 4th gen restored as 3-step gold standard; '
                    '5th gen correctly labeled total-etch (not self-etch); 7th gen labeled 1-step all-in-one (not universal).', warn_style)]]
    wt = Table(warn_data, colWidths=[W - 24*mm])
    wt.setStyle(TableStyle([
        ('BACKGROUND', (0,0), (-1,-1), WARN_BG),
        ('BOX', (0,0), (-1,-1), 1.5, GOLD),
        ('TOPPADDING', (0,0), (-1,-1), 5),
        ('BOTTOMPADDING', (0,0), (-1,-1), 5),
        ('LEFTPADDING', (0,0), (-1,-1), 8),
        ('RIGHTPADDING', (0,0), (-1,-1), 8),
    ]))
    story.append(wt)
    story.append(Spacer(1, 3*mm))

    # ── MAIN TABLE ──
    rows, row_styles = build_table()

    # Col widths (total available ~A3 landscape minus margins ≈ 377mm)
    cw = W - 24*mm
    col_widths = [
        cw * 0.09,  # Generation
        cw * 0.11,  # Type
        cw * 0.17,  # Composition
        cw * 0.13,  # Steps
        cw * 0.14,  # Step count
        cw * 0.18,  # Advantages
        cw * 0.18,  # Examples
    ]

    mt = Table(rows, colWidths=col_widths, repeatRows=1)

    ts = [
        # Header
        ('BACKGROUND', (0,0), (-1,0), MEDIUM_GREEN),
        ('TEXTCOLOR', (0,0), (-1,0), WHITE),
        ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
        ('FONTSIZE', (0,0), (-1,0), 9),
        ('ALIGN', (0,0), (-1,0), 'CENTER'),
        ('VALIGN', (0,0), (-1,0), 'MIDDLE'),
        ('TOPPADDING', (0,0), (-1,0), 6),
        ('BOTTOMPADDING', (0,0), (-1,0), 6),
        # All cells
        ('GRID', (0,0), (-1,-1), 0.5, colors.HexColor('#4a8a4a')),
        ('VALIGN', (0,1), (-1,-1), 'TOP'),
        ('TOPPADDING', (0,1), (-1,-1), 5),
        ('BOTTOMPADDING', (0,1), (-1,-1), 5),
        ('LEFTPADDING', (0,1), (-1,-1), 5),
        ('RIGHTPADDING', (0,1), (-1,-1), 5),
    ]

    # Row backgrounds
    for bg, ri in row_styles:
        ts.append(('BACKGROUND', (0, ri), (-1, ri), bg))

    # Gen column center-align
    for ri in range(1, 9):
        ts.append(('ALIGN', (0, ri), (0, ri), 'CENTER'))
        ts.append(('VALIGN', (0, ri), (0, ri), 'MIDDLE'))

    mt.setStyle(TableStyle(ts))
    story.append(mt)
    story.append(Spacer(1, 4*mm))

    # ── EVOLUTION TIMELINE ──
    evo_title_data = [[P('EVOLUTION OF DENTIN BONDING AGENTS — 8 GENERATIONS (CORRECTED TIMELINE)', evo_title_style)]]
    et_title = Table(evo_title_data, colWidths=[W - 24*mm])
    et_title.setStyle(TableStyle([
        ('BACKGROUND', (0,0), (-1,-1), colors.HexColor('#f5f5e8')),
        ('BOX', (0,0), (-1,-1), 1.5, GOLD),
        ('TOPPADDING', (0,0), (-1,-1), 5),
        ('BOTTOMPADDING', (0,0), (-1,-1), 5),
    ]))
    story.append(et_title)

    evo_rows = build_evo_table()
    # Flatten into single row with 8 cells (one per gen)
    evo_row_data = [[cell for cell in evo_rows]]
    # flatten: each 'cell' is a list of paragraphs
    flat_cells = []
    for cell in evo_rows:
        flat_cells.append(cell)

    single_row = [flat_cells]

    evo_cw = (W - 24*mm) / 8
    evo_table = Table([flat_cells], colWidths=[evo_cw] * 8)

    evo_ts = [
        ('VALIGN', (0,0), (-1,-1), 'TOP'),
        ('ALIGN', (0,0), (-1,-1), 'CENTER'),
        ('TOPPADDING', (0,0), (-1,-1), 6),
        ('BOTTOMPADDING', (0,0), (-1,-1), 6),
        ('LEFTPADDING', (0,0), (-1,-1), 4),
        ('RIGHTPADDING', (0,0), (-1,-1), 4),
        ('GRID', (0,0), (-1,-1), 0.8, GOLD),
    ]
    # Background per cell
    bgs = [BG_G1, BG_G2, BG_G3, BG_G4, BG_G5, BG_G6, BG_G7, BG_G8]
    borders = [RED_DARK, BLUE_DARK, GREEN_DARK, BROWN, PURPLE, TEAL, ORANGE, STEEL_BLUE]
    for i, (bg, bc) in enumerate(zip(bgs, borders)):
        evo_ts.append(('BACKGROUND', (i,0), (i,0), bg))
        evo_ts.append(('BOX', (i,0), (i,0), 1.5, bc))

    evo_table.setStyle(TableStyle(evo_ts))
    story.append(evo_table)
    story.append(Spacer(1, 3*mm))

    # ── FOOTER ──
    footer_data = [[
        [P('GUIDED BY', foot_hdr), P('Dr. Suparna G. Saha', foot_style),
         P('Dr. Aruna Kanaparthy', foot_style), P('Dr. Shefali Singh', foot_style)],
        [P('PRESENTED BY', foot_hdr),
         P('Dr. Shakti Singh  |  Dr. Katya Pandey', foot_style),
         P('Dr. Ankita Grace Lal  |  Dr. Mrinalini Chaddha', foot_style)],
        [P('STUDENTS', foot_hdr),
         P('Taniya Sirodiya (22059)  ·  Vidyut Parmar (22062)', foot_style),
         P('Vanshika Patidar (22060)  ·  Vijeta Patil (22063)', foot_style),
         P('Tanishka Soni (22058)  ·  Vanshita Gupta (22061)', foot_style),
         P('Shweta Kumari (22057)  ·  Yashi Sharma (22064)', foot_style)],
        [P('Index Institute of Dental Sciences', ParagraphStyle('fr', parent=foot_style, fontSize=7.5, textColor=colors.HexColor('#cccccc'))),
         P('Dept. of Conservative Dentistry & Endodontics', ParagraphStyle('fr2', parent=foot_style, fontSize=7.5, textColor=colors.HexColor('#cccccc'))),
         P('CORRECTED VERSION', ParagraphStyle('frh', parent=foot_style, fontSize=9, textColor=GOLD, fontName='Helvetica-Bold'))],
    ]]

    ft = Table(footer_data, colWidths=[cw*0.22, cw*0.28, cw*0.32, cw*0.18])
    ft.setStyle(TableStyle([
        ('BACKGROUND', (0,0), (-1,-1), DARK_GREEN),
        ('VALIGN', (0,0), (-1,-1), 'TOP'),
        ('TOPPADDING', (0,0), (-1,-1), 6),
        ('BOTTOMPADDING', (0,0), (-1,-1), 6),
        ('LEFTPADDING', (0,0), (-1,-1), 10),
        ('RIGHTPADDING', (0,0), (-1,-1), 10),
        ('LINEAFTER', (0,0), (2,0), 0.5, colors.HexColor('#4a8a4a')),
    ]))
    story.append(ft)

    doc.build(story)
    print(f'PDF generated: {output_path}')

if __name__ == '__main__':
    build_pdf('/home/daytona/workspace/dentin-bonding-infographic/Dentin_Bonding_Agent_Corrected.pdf')
Running Command

cd /home/daytona/workspace/dentin-bonding-infographic && python3 generate_infogr…

Running Command

ls -lh /home/daytona/workspace/dentin-bonding-infographic/

Your corrected infographic is ready in two formats:
PDF (print-ready, A3 landscape):

Dentin Bonding Agent Corrected

PDF Document · PDF

HTML (open in any browser for a scrollable, color-coded version):

index

HTML File · HTML


Here is a summary of every correction applied in the infographic:
GenerationOriginal PosterCorrected Version
1st Gen1980s; "High bond strength"; NPG-GMA listed as exampleLate 1960s-Early 1970s; Very LOW bond strength (2-3 MPa); copal/polyurethane adhesives; NPG-GMA moved to 2nd gen
2nd Gen1990s; "Total-etch 3-step"Late 1970s; Chemical bond/chelation, 2-step, smear layer intact; NPG-GMA correctly placed here
3rd Gen1990s; "Total-etch 2-step"Late 1970s-Late 1980s; Smear layer modifier, 3-step, separate enamel/dentin bonding
4th Gen2000s; "All-in-one single bottle"Mid-Late 1980s; Total-etch 3-step (gold standard) - separate etchant + primer + bond
5th Gen2000s; "Self-etch 2-step"Early 1990s; Total-etch 2-step (single-bottle primer-adhesive; still requires rinsing)
6th Gen2000s; "Self-etch 1-step"Mid 1990s-Early 2000s; Self-etch 2-step (self-etch primer + separate bonding resin)
7th Gen2010s; "Universal adhesive; no MDP"Early-Mid 2000s; Self-etch 1-step all-in-one; contains MDP functional monomer
8th GenNo significant error2010s-Present; Universal / multi-mode (confirmed)
The infographic uses color-coded rows per generation, clearly marks corrected fields, and includes an accurate evolution timeline at the bottom.
This is a shared conversation. Sign in to Orris to start your own chat.