Files
Sales-and-Marketing/address_book/conference_mail_merge/templates/base.html
T
beantownbabe b745d6f15d Unify contact sheet, add reconnect message template, and scale the contacts UI
conference_contacts.xlsx is now the single working file behind both the dash's
Download button and the mail-merge tool -- populated with all 139 SPIE 2026
presenters (not just ones with emails already found), so Peter can fill in
emails as he meets people at the conference. Also adds a second message
template (reconnect_message) alongside the existing wavegate_focus one, and
a search/scroll UI for the contacts list now that it's no longer a handful
of rows.
2026-08-16 09:48:12 +02:00

90 lines
2.4 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>{% block title %}TXproducts Mail Merge{% endblock %}</title>
<style>
* { box-sizing: border-box; }
html, body { margin: 0; }
body {
background: #f7f9fc;
font-family: -apple-system, "Source Sans Pro", "Segoe UI", Helvetica, Arial, sans-serif;
color: #1b2733;
padding: 28px 32px 60px;
}
h1 {
font-size: 1.5rem;
font-weight: 800;
color: #1b3a5c;
margin: 0 0 4px;
}
.sub { color: #5b6a78; margin: 0 0 24px; font-size: 0.95rem; }
.card {
background: #ffffff;
border: 1px solid #e0e7ef;
border-radius: 10px;
padding: 20px 22px;
margin-bottom: 20px;
max-width: 760px;
}
.card h2 {
font-size: 1.05rem;
color: #1b3a5c;
margin: 0 0 12px;
}
label { display: block; margin-bottom: 10px; }
.contact-row {
display: flex;
align-items: baseline;
gap: 8px;
padding: 6px 0;
border-bottom: 1px solid #f0f3f7;
}
.contact-row:last-child { border-bottom: none; }
.contact-row .meta { color: #5b6a78; font-size: 0.85rem; }
.contact-row.disabled { color: #b6bfc8; }
.contact-row.no-match { display: none; }
.contact-list-scroll { max-height: 420px; overflow-y: auto; padding-right: 4px; }
select, input[type=text] {
padding: 7px 9px;
border: 1px solid #d3dbe4;
border-radius: 6px;
font-size: 0.95rem;
width: 100%;
max-width: 360px;
}
button {
background: #2d6a9f;
color: white;
border: none;
border-radius: 6px;
padding: 9px 16px;
font-size: 0.95rem;
cursor: pointer;
margin-right: 8px;
}
button.secondary { background: #5b6a78; }
button:hover { opacity: 0.9; }
.warning {
background: #fff6e0;
border: 1px solid #f0d99a;
color: #8a6100;
border-radius: 6px;
padding: 10px 14px;
margin-bottom: 16px;
font-size: 0.9rem;
}
table { border-collapse: collapse; width: 100%; }
th, td { text-align: left; padding: 8px 10px; border-bottom: 1px solid #eef1f5; vertical-align: top; font-size: 0.9rem; }
th { color: #5b6a78; font-weight: 600; }
pre { white-space: pre-wrap; font-family: inherit; margin: 0; }
a { color: #2d6a9f; }
code { background: #f0f3f7; padding: 1px 5px; border-radius: 4px; }
</style>
</head>
<body>
{% block content %}{% endblock %}
</body>
</html>