#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Luciferase A4 产品介绍彩页"""
import base64, os

def b64(p): return base64.b64encode(open(p,'rb').read()).decode()
LOGO=b64('/tmp/luc_logo.png'); REACT=b64('/tmp/luc_reaction.jpg'); CHART=b64('/tmp/luc_chart.jpg')
QR=b64('/Users/liuxinyuan/work/公司资料/试用装申请.png')
OUT='/Users/liuxinyuan/Desktop/Hermes输出-工作类/对外物料/Luciferase_产品介绍_A4_20261027.html'

html=f'''<!DOCTYPE html><html lang="zh-CN"><head><meta charset="utf-8">
<style>
@page{{size:A4;margin:0}}
*{{box-sizing:border-box;margin:0;padding:0}}
html,body{{width:210mm;height:297mm;overflow:hidden}}
body{{font-family:"PingFang SC","Microsoft YaHei",-apple-system,sans-serif;color:#17324d;background:#fff;-webkit-print-color-adjust:exact;print-color-adjust:exact}}
.page{{width:210mm;height:297mm;padding:8mm 10mm 7mm;position:relative;display:flex;flex-direction:column;background:
 radial-gradient(circle at 92% 6%,rgba(26,115,232,.10),transparent 22%),
 radial-gradient(circle at 4% 92%,rgba(30,142,90,.08),transparent 20%),#fff}}
.top{{display:flex;align-items:center;gap:3mm;border-bottom:.6pt solid #dbe6f0;padding-bottom:1.5mm}}
.top img{{height:8.2mm}}
.top .sl{{margin-left:auto;font-size:7pt;color:#1565c0;letter-spacing:1pt}}
.hero{{margin-top:2.6mm;background:linear-gradient(120deg,#0b3f7a,#1264b8 55%,#1a73e8);border-radius:2.6mm;color:#fff;padding:3.8mm 5mm 4.9mm;display:flex;align-items:center;gap:5mm;position:relative;overflow:hidden}}
.hero:after{{content:"";position:absolute;right:-18mm;top:-22mm;width:60mm;height:60mm;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.16),transparent 65%)}}
.hero .badge{{display:inline-block;font-size:6.8pt;background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.35);border-radius:1mm;padding:.5mm 1.6mm;margin-bottom:1.4mm}}
.hero h1{{font-size:18pt;line-height:1.12;letter-spacing:.2pt}}
.hero h1 span{{font-size:11pt;font-weight:400;opacity:.92}}
.hero .sub{{font-size:8.2pt;opacity:.95;margin-top:1.3mm}}
.hero .cat{{font-size:7pt;opacity:.85;margin-top:1.4mm}}
.kpis{{margin-left:auto;display:flex;gap:2mm;z-index:2}}
.kpi{{background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.25);border-radius:1.6mm;padding:1.6mm 2.2mm;min-width:23mm;text-align:center}}
.kpi b{{display:block;font-size:14pt;line-height:1.1}}
.kpi span{{font-size:6.4pt;opacity:.9}}
h2{{font-size:10.2pt;color:#0b3f7a;margin:2.4mm 0 1.4mm;display:flex;align-items:center;gap:2mm}}
h2:before{{content:"";width:1.2mm;height:4.2mm;background:#1a73e8;border-radius:.6mm}}
.two{{display:grid;grid-template-columns:1.08fr .92fr;gap:4mm}}
.card{{border:.6pt solid #dbe6f0;border-radius:2mm;padding:2.6mm 3mm;background:rgba(255,255,255,.92)}}
p{{font-size:7.9pt;line-height:1.55}}
.small{{font-size:6.8pt;color:#5f7183;line-height:1.45}}
.reaction{{margin-top:1.4mm;background:#fbfdff;border:.5pt solid #e3ecf4;border-radius:1.4mm;padding:1.2mm}}
.reaction img{{width:100%;height:auto;display:block}}
.chart img{{width:100%;height:auto;display:block}}
.steps2{{margin-top:1.4mm;background:#fbfdff;border:.5pt solid #e3ecf4;border-radius:1mm;padding:1.4mm 2mm;font-size:6.7pt;color:#415a70;line-height:1.5}}
.steps2 b{{color:#0b3f7a;margin-right:1.5mm}}
.facts{{margin:1.4mm 0 0 4mm;font-size:6.9pt;color:#415a70;line-height:1.55}}
.sys{{margin-top:1.6mm;background:#eef6ff;border-left:2.5pt solid #1a73e8;border-radius:1mm;padding:1.4mm 2mm;font-size:7pt;color:#17456e;line-height:1.5}}
.sys b{{color:#0b3f7a}} .sys span{{display:block;color:#5f7183;font-size:6.5pt}}
table.mini{{width:100%;border-collapse:collapse;font-size:6.8pt;margin-top:1.4mm}}
table.mini th{{background:#eaf3fd;color:#17456e;padding:.8mm 1.2mm;border:.4pt solid #cfe0ef;font-weight:600}}
table.mini td{{padding:.8mm 1.2mm;border:.4pt solid #dbe6f0}}
.metrics{{display:flex;gap:1.6mm;margin-top:1.4mm}}
.metric{{flex:1;background:#f3f8fe;border:.5pt solid #d7e6f7;border-radius:1.4mm;padding:1.4mm 1.8mm}}
.metric b{{font-size:11pt;color:#0b3f7a;display:block}}
.metric span{{font-size:6.4pt;color:#5f7183}}
.apps{{display:grid;grid-template-columns:repeat(3,1fr);gap:2mm}}
.app{{border:.5pt solid #dbe6f0;border-radius:1.6mm;padding:2mm 2.4mm;background:#fbfdff;display:flex;gap:2mm;align-items:flex-start}}
.app .ic{{width:6.4mm;height:6.4mm;flex:0 0 6.4mm;border-radius:1.2mm;background:#e8f1fd;display:flex;align-items:center;justify-content:center;color:#1a73e8}}
.app .ic svg{{width:4.2mm;height:4.2mm;fill:none;stroke:#1a73e8;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}}
.app .ic svg.fill{{fill:#1a73e8;stroke:none}}
.app b{{font-size:7.6pt;display:block;margin-bottom:.4mm}}
.app span{{font-size:6.4pt;color:#5f7183;line-height:1.35;display:block}}
.adv{{display:grid;grid-template-columns:repeat(3,1fr);gap:2.4mm}}
.adv .card{{padding:2.4mm 2.8mm}}
.adv b{{font-size:8.2pt;color:#0b3f7a;display:block}}
.adv .num{{font-size:14pt;color:#1a73e8;font-weight:700;line-height:1.1;margin:.8mm 0}}
.adv p{{font-size:6.8pt;color:#415a70}}
table{{width:100%;border-collapse:collapse;font-size:7.2pt}}
th{{background:#eaf3fd;color:#17456e;text-align:left;padding:1.4mm 2mm;border:.5pt solid #cfe0ef;font-weight:600}}
td{{padding:1.4mm 2mm;border:.5pt solid #dbe6f0;vertical-align:top}}
.footer{{margin-top:auto;border-top:.6pt solid #dbe6f0;padding-top:1.6mm;display:flex;align-items:center;gap:4mm}}
.footer .qr{{width:13mm;height:13mm;flex:0 0 13mm}}
.footer .qr img{{width:100%;height:100%;object-fit:contain;display:block}}
.footer .info{{font-size:6.8pt;line-height:1.6;color:#415a70}}
.footer .info b{{color:#0b3f7a;font-size:7.4pt}}
.footer .slogan{{margin-left:auto;text-align:right;font-size:6.6pt;color:#1565c0;letter-spacing:.6pt}}
</style></head><body><div class="page">

<div class="top"><img src="data:image/png;base64,{LOGO}"><span class="sl">守护生命健康，缔造美好生活</span></div>

<div class="hero">
  <div>
    <span class="badge">分子诊断原料 · 报告基因</span>
    <h1>Luciferase <span>萤火虫荧光素酶</span></h1>
    <div class="sub">基因工程改造 · 高信号 · 耐温稳 · 可冻干</div>
    <div class="cat">货号 E800系列 ｜ 规格 1 mg/mL ｜ 甘油液体 / 冻干粉</div>
  </div>
  <div class="kpis">
    <div class="kpi"><b>≈3×</b><span>相同酶量<br>荧光信号</span></div>
    <div class="kpi"><b>74%</b><span>37℃ 7 天<br>活力保留</span></div>
    <div class="kpi"><b>77%</b><span>25℃ 7 天<br>活力保留</span></div>
  </div>
</div>

<h2>产品概述与反应原理</h2>
<div class="two">
  <div class="card">
    <p>萤火虫荧光素酶（Luciferase）在 ATP、分子氧和 D-荧光素参与下，催化两步反应并产生光信号。该酶广泛用于 ATP 检测与定量、报告基因检测、细胞活力/代谢分析，以及 ATP 检测试剂盒与体外诊断原料开发。</p>
    <div class="reaction"><img src="data:image/jpeg;base64,{REACT}"></div>
    <p class="small">反应式：D-Luciferin + ATP + O₂ → Oxyluciferin + AMP + CO₂ + PPi + 光（Mg²⁺ 参与）</p>
    <div class="steps2"><b>反应步骤</b>① D-Luciferin + ATP → Luciferyl-AMP + PPi　② Luciferyl-AMP + O₂ → Oxyluciferin + AMP + CO₂ + 光</div>
    <ul class="facts"><li>基因工程改造蛋白</li><li>−20℃ 保存活力稳定</li><li>甘油液体 / 冻干粉两种形式</li></ul>
    <div class="sys"><b>反应体系</b> Luciferase · D-Luciferin · ATP · Mg²⁺ · O₂ <span>检测信号：化学发光（RLU）</span></div>
  </div>
  <div class="card chart">
    <img src="data:image/jpeg;base64,{CHART}">
    <div class="metrics">
      <div class="metric"><b>74%</b><span>37℃ 7 天<br>竞品 40%</span></div>
      <div class="metric"><b>77%</b><span>25℃ 7 天<br>竞品 55%</span></div>
      <div class="metric"><b>3×</b><span>0 天信号<br>约竞品 3 倍</span></div>
    </div>
    <table class="mini">
      <tr><th>7 天活力保留</th><th>Luciferase</th><th>Supplier N</th></tr>
      <tr><td>37℃</td><td><b>74%</b></td><td>40%</td></tr>
      <tr><td>25℃</td><td><b>77%</b></td><td>55%</td></tr>
    </table>
    <p class="small">加速稳定性对比：0/2/4/7 天，4℃、25℃、37℃ 条件下荧光信号与活力保留率。</p>
  </div>
</div>

<h2>应用方向</h2>
<div class="apps">
  <div class="app"><div class="ic"><svg class="fill" viewBox="0 0 24 24"><path d="M13 2 4 14h6l-1 8 9-12h-6z"/></svg></div><div><b>ATP 检测与定量</b><span>细胞、微生物、环境样本 ATP 水平</span></div></div>
  <div class="app"><div class="ic"><svg viewBox="0 0 24 24"><path d="M4 20V10M10 20V4M16 20v-7M22 20H2"/></svg></div><div><b>报告基因检测</b><span>启动子/信号通路活性分析</span></div></div>
  <div class="app"><div class="ic"><svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="8"/><circle cx="12" cy="12" r="2.5"/></svg></div><div><b>细胞活力与代谢</b><span>增殖、毒性、代谢状态评估</span></div></div>
  <div class="app"><div class="ic"><svg viewBox="0 0 24 24"><path d="M9 3h6M10 3v6l-5 9a2 2 0 0 0 2 3h10a2 2 0 0 0 2-3l-5-9V3"/><path d="M7 15h10"/></svg></div><div><b>ATP 检测试剂盒开发</b><span>作为核心酶原料</span></div></div>
  <div class="app"><div class="ic"><svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="9"/><path d="M12 7v10M7 12h10"/></svg></div><div><b>体外诊断原料</b><span>发光体系与诊断试剂配套</span></div></div>
  <div class="app"><div class="ic"><svg viewBox="0 0 24 24"><path d="M7 3c0 5 10 7 10 12M17 3c0 5-10 7-10 12M7 21c0-2 10-2 10 0M17 21c0-2-10-2-10 0"/></svg></div><div><b>分子生物学研究</b><span>基因表达、蛋白相互作用研究</span></div></div>
</div>

<h2>产品优势</h2>
<div class="adv">
  <div class="card"><b>信号更强 · 用量更省</b><div class="num">≈3×</div><p>相同酶量下，荧光信号值约为竞品 3 倍；在同等信号要求下可减少酶用量。</p></div>
  <div class="card"><b>耐温更稳 · 运输更宽容</b><div class="num">74% / 77%</div><p>37℃ 7 天保留 74% 活力（竞品 40%）；25℃ 7 天保留 77%（竞品 55%）。</p></div>
  <div class="card"><b>形式灵活 · 按需定制</b><div class="num">2 种</div><p>甘油液体与冻干粉两种形式；冻干后性能稳定，支持按应用场景定制。</p></div>
</div>

<h2>货号与规格</h2>
<table>
<tr><th style="width:30%">产品名称</th><th style="width:24%">货号</th><th style="width:18%">规格</th><th>形式</th></tr>
<tr><td>Luciferase</td><td><b>E800系列</b></td><td>1 mg/mL</td><td>甘油液体 / 冻干粉（可定制）</td></tr>
</table>
<p class="small">保存条件：-20℃ 长期保存；避免反复冻融。冻干粉按说明书复溶。</p>

<h2>产品形式与定制</h2>
<div class="adv">
  <div class="card"><b>甘油液体</b><div class="num">1 mg/mL</div><p>−20℃ 保存；用于常规反应体系与试剂盒配制。</p></div>
  <div class="card"><b>冻干粉</b><div class="num">定制</div><p>冻干后性能稳定；用于常温运输、POCT 与冻干试剂开发。</p></div>
  <div class="card"><b>定制服务</b><div class="num">按需</div><p>浓度、缓冲体系、规格可按应用场景定制。</p></div>
</div>
<p class="small">数据说明：加速稳定性实验条件为 4℃/25℃/37℃、0/2/4/7 天；信号值为化学发光 RLU，活力保留率以 0 天为 100%。竞品为 Supplier N。</p>

<div class="footer">
  <div class="qr"><img src="data:image/png;base64,{QR}"></div>
  <div class="info"><b>珠海宝锐生物科技有限公司</b><br>电话 0756-8699969 ｜ 邮箱 marketing@biori.com ｜ 官网 www.biori.com<br>地址 广东省珠海市香洲区水岸一路 88 号</div>
  <div class="slogan">BIORI BIOTECH<br>守护生命健康，缔造美好生活</div>
</div>

</div></body></html>'''
open(OUT,'w',encoding='utf-8').write(html)
print('saved',OUT,len(html))
