html {
min-height: 500px;
}
.flex {
display: flex;
padding: 20px 0 80px;
align-items: center;
justify-content: center;
min-height: calc(100vh - var(--height-footer));
}
.m-10 {
margin: 10px;
}
.semi-bold {
font-weight: 600;
}
.white-box {
position: relative;
padding: 30px;
min-width: 0;
/* Sensibly and correctly wrap email addresses
over multiple lines, when necessary. */
overflow-wrap: break-word;
background-color: hsl(0deg 0% 100%);
box-shadow: 0 0 4px hsl(0deg 0% 0% / 10%);
border: 1px solid hsl(0deg 0% 87%);
border-radius: 4px;
}
.bottom-text {
text-align: center;
margin-top: 20px;
font-weight: 400;
font-size: 0.9em;
& a {
color: var(--color-link-portico-auth);
&:hover {
text-decoration: none;
color: var(--color-link-portico-auth-hover);
}
}
}
.left-text {
text-align: left;
margin-top: 0;
}
#realm-import-post-process,
#new-realm-creation {
.get-started {
font-size: 2rem;
}
}
#create-account {
padding: 20px 0;
}
.bottom-text-large {
text-align: center;
margin-top: 20px;
font-weight: 400;
font-size: 1.2em;
& a {
color: var(--color-link-portico-auth);
&:hover {
text-decoration: none;
color: var(--color-link-portico-auth-hover);
}
}
}
.grey {
color: hsl(0deg 0% 67%);
}
.app-main {
.login-page-header {
font-size: 1.5em;
font-weight: 300;
margin: 0;
line-height: 1.25;
height: 0;
transform: translateX(-15px) translateY(-60px);
text-align: left;
}
.login-page-container.dev-login {
.login-page-header {
height: auto;
margin-top: 20px;
transform: none;
text-align: center;
}
& h2 {
font-size: 1em;
font-weight: 400;
}
.group {
display: inline-block;
vertical-align: top;
margin: 0 20px;
}
& select {
height: 30px;
padding: 0 6px;
width: 220px;
font-size: 14px;
color: hsl(0deg 0% 33%);
border-radius: 4px;
border: 1px solid hsl(0deg 0% 80%);
margin-bottom: 10px;
cursor: pointer;
background-color: hsl(0deg 0% 100%);
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}
}
&.forgot-password-container {
font-weight: 400;
}
&.find-account-page-container {
width: 500px;
font-weight: 400;
}
.find-account-form-tip {
font-size: 0.8em;
}
&.goto-account-page-container {
width: 500px;
font-weight: 400;
.realm-redirect-form {
text-align: center;
.inline-block {
text-align: center;
}
}
}
&.confirm-continue-page-container {
width: 400px;
font-weight: 400;
.white-box {
min-width: 365px;
}
.form-inline {
display: inline-block;
}
.form-inline .outline {
border: 2px inset hsl(213deg 23% 25%);
background-color: hsl(0deg 0% 100%);
color: hsl(213deg 23% 25%);
padding: 13px 20px 11px;
&:hover {
background-color: hsl(213deg 65% 97%);
}
}
& p {
font-size: 19px;
}
}
&.account-email-confirm-container .white-box {
max-width: 545px;
}
}
.login-page-container {
&.dev-login {
margin-top: 20px;
border: none;
.login-form {
width: auto;
}
}
.group {
margin: 0 20px;
display: inline-block;
}
.dev-button {
color: hsl(170deg 41% 52%);
border: 1px solid hsl(170deg 41% 52%);
border-radius: 4px;
background-color: transparent;
font-family: inherit;
font-weight: normal;
line-height: 20px;
vertical-align: middle;
margin: 0;
width: auto;
transition:
color 0.3s ease,
border-color 0.3s ease;
&:hover {
color: hsl(156deg 62% 61%);
border-color: hsl(156deg 62% 61%);
}
&.dev-login-button {
padding: 8px;
font-size: 19px;
min-width: 300px;
cursor: pointer;
}
&.dev-create-button {
padding: 6px 12px;
margin-bottom: 4px;
font-size: 15px;
cursor: pointer;
}
}
}
.new-style .login-page-container .alert,
.register-page-container .new-style .alert {
margin: 0;
text-align: left;
font-size: 0.7em;
font-weight: 600;
}
.register-page-container {
&.closed-realm {
.right-side {
display: none;
}
.left-side {
border-right: none;
}
.invite-required {
display: block;
color: hsl(0deg 0% 67%);
font-weight: normal;
}
}
.invite-required {
display: none;
line-height: 1;
& i {
margin-right: 5px;
}
}
}
.forgot-password-container {
width: 503px;
& form {
margin-bottom: 0;
}
}
.deactivated-realm-container {
width: 503px;
}
.header {
color: hsl(0deg 0% 27%);
background-color: hsl(0deg 0% 100%);
position: sticky;
width: 100%;
top: 0;
.top-links a,
/* specificity to override the color of `.light` */
.header-main .logo .portico-header-text {
color: hsl(0deg 0% 27%);
}
}
.register-form {
&.new-style {
text-align: left;
color: hsl(0deg 0% 45%);
}
#errors {
font-size: 0.8em;
font-weight: 400;
margin-bottom: 20px;
margin-top: 10px;
&:empty {
margin-top: 0;
}
}
& button {
margin-top: 22px;
}
}
.account-accept-terms-page {
#registration,
#accept_tos_button {
margin: 0;
}
.fakecontrol {
font-weight: normal;
}
.description {
margin-bottom: 20px;
font-size: 16px;
font-weight: 400;
max-width: 400px;
}
#new-user-email-address-visibility {
max-width: 400px;
}
.center-block {
max-width: 800px;
.controls {
margin-bottom: 5px;
}
}
#accept_tos_button {
margin-top: 20px;
}
}
#demo-realm-creation {
.terms-of-service.input-group {
width: 330px;
margin: 25px auto 10px;
}
.input-box .register-button {
margin-top: 0;
&[disabled] {
cursor: default;
opacity: 0.6;
}
}
}
.register-account #registration {
.terms-of-service,
.input-group .marketing-emails,
.default-stream-groups .input-group,
.default-stream-groups p {
width: 330px;
margin: 0 auto 10px;
}
}
.account-creation {
font-weight: 400;
.pitch {
margin-bottom: 0;
}
.alert.alert-info {
padding: 8px 14px;
text-align: left;
font-size: 1em;
line-height: 1.3;
}
.white-box p:last-of-type {
margin-bottom: 0;
}
}
.relative {
position: relative;
}
.new-style {
& button {
display: inline-block;
vertical-align: top;
padding: 13px 22px;
font-family: "Source Sans 3 VF", sans-serif;
font-size: 1.2rem;
font-weight: 400;
box-sizing: border-box;
outline: none;
color: hsl(0deg 0% 100%);
background-color: var(--color-action-button);
margin: 25px 0 5px;
height: 48px;
border: none;
border-radius: 4px;
clip-path: inset(-1px);
transition: 0.05s ease-in;
transition-property: background-color, clip-path;
&:hover {
background-color: var(--color-action-button-hover);
transition: 0.1s ease-out;
transition-property: background-color, clip-path;
}
&:active {
background-color: var(--color-action-button-active);
clip-path: inset(1px round 4px);
}
&:focus-visible {
outline: 3px solid hsl(213deg 81% 79%);
/* Override the base clip-path so the focus outline isn't
trimmed to a 1px square around the rounded button. */
clip-path: none;
}
&:disabled {
opacity: 0.6;
cursor: not-allowed;
}
&.full-width {
width: 100%;
}
&.anonymous-access-button {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 8px;
background-color: hsl(0deg 0% 100%);
color: var(--color-action-button);
box-shadow: 0 0 0 1px var(--color-action-button) inset;
&:hover {
background-color: var(--color-action-button-subtle-hover);
}
&:active {
background-color: var(--color-action-button-subtle-active);
/* Preserve the inset border — the default active
clip-path would crop the bottom edge. */
clip-path: inset(0 round 4px);
}
.zulip-icon {
font-size: 1.3em;
/* Nudge icon down to visually align with text x-height. */
transform: translateY(1px);
}
}
}
.alert-info {
font-weight: 400;
}
.alert {
&:not(
#server-deactivate-error,
#server-login-error,
.alert-info,
.billing-page-success,
.upgrade-page-success,
.sponsorship-page-success,
#autopay-error
) {
padding: 0;
margin-bottom: 5px;
font-weight: 600;
font-size: 0.7em;
line-height: 1.2;
background-color: transparent;
border: none;
color: hsl(0deg 44% 54%);
}
&.alert-error {
text-align: left;
}
}
.form-inline {
margin: 0;
}
.get-started {
font-size: 2.5rem;
text-align: center;
color: hsl(0deg 0% 40%);
margin-bottom: 20px;
}
.right-side .alert {
max-width: 328px;
}
.input-box {
position: relative;
display: inline-block;
vertical-align: top;
& input[type="text"],
input[type="email"],
input[type="password"],
input[type="number"],
input[type="url"],
textarea,
select {
/* 10.5px vertical padding + 2px border + content
height gives 48px, matching the button height. */
padding: 10.5px 32px 10.5px 12px;
margin: 25px 0 5px;
font-family: "Source Sans 3 VF", sans-serif;
font-size: 1.2rem;
line-height: normal;
height: auto;
width: 280px;
border: 1px solid hsl(0deg 0% 87%);
box-shadow: none;
border-radius: 4px;
background-color: hsl(0deg 0% 100%);
color: hsl(0deg 0% 33%);
transition: border-color 0.3s ease;
&:focus:invalid {
box-shadow: none;
color: hsl(0deg 0% 27%);
}
&:focus {
border-color: hsl(0deg 0% 53%);
outline: 0;
}
}
& input[type="email"] {
margin-bottom: 10px;
}
/* TODO: We need to audit all the portico