snapshot of https://github.com/zulip/zulip.git @ 48c69911c7dd4e03b20552eb3bd77ad8151c1357 (2026-09-15)
Some checks failed
Code scanning / CodeQL (push) Failing after 15s
Zulip production suite / Ubuntu 22.04 production build (push) Failing after 26s
Zulip production suite / Debian 12 production install with custom db name and user (push) Has been skipped
Zulip production suite / Ubuntu 22.04 production install and PostgreSQL upgrade with pgroonga (push) Has been skipped
Zulip production suite / Ubuntu 24.04 production install (push) Has been skipped
Zulip production suite / Ubuntu 26.04 production install (push) Has been skipped
Zulip production suite / Debian 13 production install (push) Has been skipped
Zulip production suite / 7.0 Version Upgrade (push) Has been skipped
Zulip production suite / 8.0 Version Upgrade (push) Has been skipped
Zulip production suite / 6.0 Version Upgrade (push) Has been skipped
Zulip production suite / 10.0 Version Upgrade (push) Has been skipped
Zulip production suite / 9.0 Version Upgrade (push) Has been skipped
Zulip production suite / 12.0 Version Upgrade (push) Has been skipped
Zulip production suite / 11.0 Version Upgrade (push) Has been skipped
GitHub Actions Security Analysis with zizmor / zizmor (push) Failing after 3s
Zulip CI / Debian 12 (Python 3.11, backend + documentation) (push) Failing after 26s
Zulip CI / Ubuntu 22.04 (Python 3.10, backend + frontend) (push) Failing after 3s
Zulip CI / Ubuntu 24.04 (Python 3.12, backend) (push) Failing after 25s
Zulip CI / Ubuntu 26.04 (Python 3.14, backend) (push) Failing after 25s
Zulip CI / Debian 13 (Python 3.13, backend) (push) Failing after 28s
Zulip production suite / Required jobs (push) Has been cancelled
Zulip CI / Required jobs (push) Has been cancelled
API Documentation Update Check / check-feature-level-updated (push) Has been cancelled
API Documentation Update Check / notify-if-api-docs-changed (push) Has been cancelled
Some checks failed
Code scanning / CodeQL (push) Failing after 15s
Zulip production suite / Ubuntu 22.04 production build (push) Failing after 26s
Zulip production suite / Debian 12 production install with custom db name and user (push) Has been skipped
Zulip production suite / Ubuntu 22.04 production install and PostgreSQL upgrade with pgroonga (push) Has been skipped
Zulip production suite / Ubuntu 24.04 production install (push) Has been skipped
Zulip production suite / Ubuntu 26.04 production install (push) Has been skipped
Zulip production suite / Debian 13 production install (push) Has been skipped
Zulip production suite / 7.0 Version Upgrade (push) Has been skipped
Zulip production suite / 8.0 Version Upgrade (push) Has been skipped
Zulip production suite / 6.0 Version Upgrade (push) Has been skipped
Zulip production suite / 10.0 Version Upgrade (push) Has been skipped
Zulip production suite / 9.0 Version Upgrade (push) Has been skipped
Zulip production suite / 12.0 Version Upgrade (push) Has been skipped
Zulip production suite / 11.0 Version Upgrade (push) Has been skipped
GitHub Actions Security Analysis with zizmor / zizmor (push) Failing after 3s
Zulip CI / Debian 12 (Python 3.11, backend + documentation) (push) Failing after 26s
Zulip CI / Ubuntu 22.04 (Python 3.10, backend + frontend) (push) Failing after 3s
Zulip CI / Ubuntu 24.04 (Python 3.12, backend) (push) Failing after 25s
Zulip CI / Ubuntu 26.04 (Python 3.14, backend) (push) Failing after 25s
Zulip CI / Debian 13 (Python 3.13, backend) (push) Failing after 28s
Zulip production suite / Required jobs (push) Has been cancelled
Zulip CI / Required jobs (push) Has been cancelled
API Documentation Update Check / check-feature-level-updated (push) Has been cancelled
API Documentation Update Check / notify-if-api-docs-changed (push) Has been cancelled
This commit is contained in:
358
templates/zerver/emails/email.css
Normal file
358
templates/zerver/emails/email.css
Normal file
@@ -0,0 +1,358 @@
|
||||
/* stylelint-disable color-no-hex, media-feature-range-notation */
|
||||
|
||||
/* Hex color codes are used instead of our standard of hsl colors,
|
||||
because hex color codes are rendered by all email clients
|
||||
consistently; HSL colors aren't supported by Hotmail. */
|
||||
|
||||
.illustration img,
|
||||
img.bottom-illustration {
|
||||
border: none;
|
||||
-ms-interpolation-mode: bicubic;
|
||||
max-width: 100%;
|
||||
vertical-align: bottom;
|
||||
}
|
||||
|
||||
body.default-email-font-settings {
|
||||
font-family: sans-serif;
|
||||
font-size: 14px;
|
||||
line-height: 1.4;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
-ms-text-size-adjust: 100%;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
}
|
||||
|
||||
/* These .layout tables are used to create sections within the email;
|
||||
see for example: https://templates.mailchimp.com/development/html/
|
||||
*/
|
||||
table.layout {
|
||||
border-collapse: separate;
|
||||
mso-table-lspace: 0;
|
||||
mso-table-rspace: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
table.layout > tbody > tr > td {
|
||||
font-family: sans-serif;
|
||||
font-size: 14px;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
/* After email clients strip the actual body tag out of the email, the
|
||||
.body element will be the equivalent of our outer element. */
|
||||
.body {
|
||||
width: 100%;
|
||||
background-color: #f5f9f8;
|
||||
}
|
||||
|
||||
.container {
|
||||
display: block;
|
||||
margin: 0 auto !important;
|
||||
max-width: 500px;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
/* This class is used to ensure that the images' width
|
||||
does not exceed the actual email layout width. */
|
||||
img.responsive-width {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
/* Our newsletters/marketing emails use a wider content width, to
|
||||
support more complex content with text to the side of images. */
|
||||
.container.wide-container {
|
||||
max-width: 700px;
|
||||
}
|
||||
|
||||
/* Mystery: .container contains .content, but the max-widths for this
|
||||
element are 80px wider than those for .container. */
|
||||
.content {
|
||||
box-sizing: border-box;
|
||||
display: block;
|
||||
margin: 20px auto 0;
|
||||
max-width: 580px;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.content.wide-content {
|
||||
max-width: 780px;
|
||||
}
|
||||
|
||||
/*
|
||||
The main content region for the email; excludes the preheader and footer.
|
||||
*/
|
||||
.main {
|
||||
background-color: #fff;
|
||||
border-radius: 3px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* Right/left padding to keep content away from edges of email client winder. */
|
||||
.wrapper {
|
||||
box-sizing: border-box;
|
||||
padding: 0 20px 20px;
|
||||
}
|
||||
|
||||
/* Footer section, containing unsubscribe links and the like. */
|
||||
.footer {
|
||||
clear: both;
|
||||
padding-top: 10px;
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
/*
|
||||
Apple mail and other popular email clients will convert the physical
|
||||
address into a link, so we set link color on it.
|
||||
*/
|
||||
.footer-content-block,
|
||||
.physical-address {
|
||||
color: #5f5ec7;
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/*
|
||||
Styles for the content section of Zulip newsletters and other custom emails.
|
||||
*/
|
||||
.custom-email-content h1 {
|
||||
font-size: 1.6em;
|
||||
margin-top: 25px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.content ul,
|
||||
.content ol {
|
||||
/* Override excessive indentation seen in Gmail. */
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
.body p,
|
||||
p.digest_paragraph,
|
||||
.content ul,
|
||||
.content ol {
|
||||
font-family: sans-serif;
|
||||
font-size: 14px;
|
||||
font-weight: normal;
|
||||
margin: 10px 0;
|
||||
}
|
||||
|
||||
.messages p.digest_paragraph {
|
||||
line-height: normal;
|
||||
margin: 4px 0 0;
|
||||
}
|
||||
|
||||
.body p li,
|
||||
.content ul li,
|
||||
.content ol li {
|
||||
list-style-position: outside;
|
||||
margin-left: 15px;
|
||||
}
|
||||
|
||||
/* Link color styling carefully tuned to not apply to user content
|
||||
inside missed-message emails. */
|
||||
.body a,
|
||||
.digest_paragraph a,
|
||||
.sponsorship_request_link,
|
||||
.support_request_link,
|
||||
.email-preferences a,
|
||||
.missed_message.no-content-explanation a {
|
||||
color: #5f5ec7;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.body a:hover,
|
||||
.digest_paragraph a:hover,
|
||||
.sponsorship_request_link:hover,
|
||||
.support_request_link:hover,
|
||||
.email-preferences a:hover,
|
||||
.missed_message.no-content-explanation a:hover {
|
||||
color: #434388 !important;
|
||||
}
|
||||
|
||||
.body .button {
|
||||
display: block;
|
||||
padding: 10px 0;
|
||||
margin: 20px auto;
|
||||
width: 200px;
|
||||
color: #5f5ec7;
|
||||
border: 2px solid #5f5ec7;
|
||||
background-color: #fff;
|
||||
border-radius: 4px;
|
||||
font-size: 16px;
|
||||
outline: none;
|
||||
font-family: sans-serif;
|
||||
text-decoration: none;
|
||||
text-align: center;
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
.body a.button:hover {
|
||||
background-color: #5f5ec7;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* The preheader is an invisible region that is used to control what
|
||||
email clients display as the textual preview of the email's content
|
||||
in inbox views. */
|
||||
.preheader {
|
||||
color: transparent;
|
||||
display: none;
|
||||
height: 0;
|
||||
max-height: 0;
|
||||
max-width: 0;
|
||||
opacity: 0;
|
||||
overflow: hidden;
|
||||
mso-hide: all;
|
||||
visibility: hidden;
|
||||
width: 0;
|
||||
}
|
||||
|
||||
/* Illustrations appear over the top of the boundary between the
|
||||
blank space at the top of the email and the content box; for
|
||||
that reason they need a high z-index. */
|
||||
.illustration {
|
||||
pointer-events: none;
|
||||
cursor: default !important;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
/* Styling for empty topic placeholders. */
|
||||
.empty-topic-display {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
/* CSS for digest email content. */
|
||||
.messages {
|
||||
width: 600px;
|
||||
font-size: 12px;
|
||||
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
overflow-y: auto;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.hot_convo_recipient_block {
|
||||
border: 1px solid #000;
|
||||
}
|
||||
|
||||
.hot_convo_recipient_header {
|
||||
background-color: #9ec9ff;
|
||||
border-bottom: 1px solid #000;
|
||||
font-weight: bold;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.hot_convo_message_content {
|
||||
margin-left: 1px;
|
||||
margin-right: 2px;
|
||||
}
|
||||
|
||||
.hot_convo_message_content_block {
|
||||
padding-left: 6px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
/* Text and link colors for missed-message emails. */
|
||||
.email-preferences {
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.email-preferences a {
|
||||
color: #15c;
|
||||
}
|
||||
|
||||
.content_disabled_help_link {
|
||||
color: #15c;
|
||||
}
|
||||
|
||||
/* Quoted block for text written by an organization administrator to
|
||||
explain to the end user why their account got deactivated. */
|
||||
.deactivated-user-text {
|
||||
padding: 0 0 0 15px;
|
||||
margin: 0 0 20px;
|
||||
border-left: 5px solid #eee;
|
||||
white-space: pre-line;
|
||||
font-family: sans-serif;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 620px) {
|
||||
table[class="body"] h1 {
|
||||
font-size: 28px !important;
|
||||
margin-bottom: 10px !important;
|
||||
}
|
||||
|
||||
table[class="body"] p,
|
||||
table[class="body"] ul,
|
||||
table[class="body"] ol,
|
||||
table[class="body"] td,
|
||||
table[class="body"] span,
|
||||
table[class="body"] a {
|
||||
font-size: 16px !important;
|
||||
}
|
||||
|
||||
table[class="body"] .wrapper {
|
||||
padding: 0 10px 10px;
|
||||
}
|
||||
|
||||
table[class="body"] .content {
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
table[class="body"] .container {
|
||||
padding: 0 !important;
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
table[class="body"] .main {
|
||||
border-left-width: 0 !important;
|
||||
border-radius: 0 !important;
|
||||
border-right-width: 0 !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media all {
|
||||
/* See https://templates.mailchimp.com/development/css/client-specific-styles/;
|
||||
ExternalClass is something Microsoft Outlook adds to emails. */
|
||||
.ExternalClass {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.ExternalClass,
|
||||
.ExternalClass p,
|
||||
.ExternalClass span,
|
||||
.ExternalClass font,
|
||||
.ExternalClass td,
|
||||
.ExternalClass div {
|
||||
line-height: 100%;
|
||||
}
|
||||
|
||||
/* iOS converts physical addresses in emails to links automatically,
|
||||
so this CSS has an effect on iOS even though we don't actually
|
||||
have a link inside the .physical-address element. */
|
||||
.physical-address a {
|
||||
color: inherit !important;
|
||||
font-family: inherit !important;
|
||||
font-size: inherit !important;
|
||||
font-weight: inherit !important;
|
||||
line-height: inherit !important;
|
||||
text-decoration: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* Mechanism for images alongside content, mainly for use in newsletters. */
|
||||
.float-right-image {
|
||||
float: right;
|
||||
}
|
||||
|
||||
/* The 450px cutoff was determined by testing in Gmail as a point
|
||||
where an image looks good in either state. Logically it makes sense
|
||||
since then the text still has the majority of the space in the
|
||||
side-by-side view. */
|
||||
@media only screen and (min-width: 450px) {
|
||||
.float-right-image {
|
||||
max-width: 200px;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user