const STYLESHEET = ` * { box-sizing: border-box; } body, html { margin: 0; padding: 0; width: 100%; min-height: 100%; } body { padding: 2vh; font-size: 2.2vh; } html { background-size: auto 100%; background-size: cover; background-position: center center; background-repeat: no-repeat; box-shadow: inset 0 0 0 2000px rgb(0 0 0 / 60%); } body { display: flex; font-family: 'Open Sans', Arial, sans-serif; color: white; } h1 { font-size: 4.5vh; font-weight: 700; } h2 { font-size: 2.2vh; font-weight: normal; font-style: italic; opacity: 0.8; } h3 { font-size: 2.2vh; } h1, h2, h3, p { margin: 0; text-shadow: 0 0 1vh rgba(0, 0, 0, 0.15); } p { font-size: 1.75vh; } ul { font-size: 1.75vh; margin: 0; margin-top: 1vh; padding-left: 3vh; } a { color: white } a.install-link { text-decoration: none } button { border: 0; outline: 0; color: white; background: #8A5AAB; padding: 1.2vh 3.5vh; margin: auto; text-align: center; font-family: 'Open Sans', Arial, sans-serif; font-size: 2.2vh; font-weight: 600; cursor: pointer; display: block; box-shadow: 0 0.5vh 1vh rgba(0, 0, 0, 0.2); transition: box-shadow 0.1s ease-in-out; } button:hover { box-shadow: none; } button:active { box-shadow: 0 0 0 0.5vh white inset; } #addon { width: 40vh; margin: auto; } .logo { height: 14vh; width: 14vh; margin: auto; margin-bottom: 3vh; } .logo img { width: 100%; } .name, .version { display: inline-block; vertical-align: top; } .name { line-height: 5vh; margin: 0; } .version { position: relative; line-height: 5vh; opacity: 0.8; margin-bottom: 2vh; } .contact { position: absolute; left: 0; bottom: 4vh; width: 100%; text-align: center; } .contact a { font-size: 1.4vh; font-style: italic; } .separator { margin-bottom: 4vh; } .form-element { margin-bottom: 2vh; } .label-to-top { margin-bottom: 2vh; } .label-to-right { margin-left: 1vh !important; } .full-width { width: 100%; } ` function landingTemplate(manifest) { const background = manifest.background || 'https://dl.strem.io/addon-background.jpg' const logo = manifest.logo || 'https://dl.strem.io/addon-logo.png' const contactHTML = manifest.contactEmail ? `
Contact ${manifest.name} creator:
${manifest.contactEmail}