"""
guide_positions = {}
pam_positions = {}
cut_positions = set()
for idx, site in enumerate(pam_sites):
start = site["position"]
guide_len = len(site["guide"])
for i in range(start, start + guide_len):
guide_positions[i] = idx
pam_start = start + guide_len
for i in range(pam_start, pam_start + 3):
pam_positions[i] = idx
cut_positions.add(site["cut_site"])
for i, base in enumerate(sequence):
style = ""
if i in guide_positions:
style += "background-color:#2563eb;color:white;"
if i in pam_positions:
style += "background-color:#dc2626;color:white;font-weight:bold;"
if i in cut_positions:
style += "border-bottom:3px solid #22c55e;"
if i % 10 == 0:
html += f"
{i} "
html += f"
{base}"
if (i + 1) % 80 == 0:
html += "
"
html += """
Guide RNA
PAM Site (NGG)
Cas9 Cut Site
"""
return html