mirror of https://github.com/zulip/zulip.git
portico: Update plans tab on other pages.
This adds the new tabs from /plans to: * /for/business * /self-hosting And it isolates legacy styles to preserve the tabs on /for/education Fixes: #28013
This commit is contained in:
parent
95b39bc8bf
commit
2ea37a54a6
|
@ -566,10 +566,11 @@
|
|||
</blockquote>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-pricing">
|
||||
{% include "corporate/legacy_pricing_model.html" %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="portico-pricing showing-self-hosted">
|
||||
{% include "corporate/pricing_model.html" %}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -252,7 +252,7 @@
|
|||
<div class="feature-end">
|
||||
<div class="feature-pricing" id="feature-pricing">
|
||||
<h1 class="center"> Zulip Cloud for Education plans </h1>
|
||||
<div class="for-education pricing-model">
|
||||
<div class="for-education-pricing-model">
|
||||
<div class="padded-content">
|
||||
<div class="pricing-container">
|
||||
<div class="price-box" tabindex="-1">
|
||||
|
|
|
@ -1,173 +0,0 @@
|
|||
<div class="pricing-model">
|
||||
<div class="padded-content">
|
||||
<h1>Get started today.</h1>
|
||||
|
||||
<div class="pricing-container">
|
||||
<div class="block">
|
||||
<div class="plan-title responsive-title">
|
||||
Zulip Cloud
|
||||
</div>
|
||||
|
||||
<div class="price-box" tabindex="-1">
|
||||
<div class="text-content">
|
||||
<h2>Free</h2>
|
||||
<div class="description">
|
||||
Best for light use.
|
||||
</div>
|
||||
<hr />
|
||||
<ul class="feature-list">
|
||||
<li>10,000 messages of search history</li>
|
||||
<li>File storage up to 5 GB total</li>
|
||||
<li><a href="/features/">Full-featured</a> team chat service</li>
|
||||
<li><a href="/integrations/">Hundreds of integrations</a></li>
|
||||
<li>Advanced <a href="/help/roles-and-permissions">roles</a> and <a href="/help/stream-permissions">permissions</a></li>
|
||||
<li><a href="/help/roles-and-permissions">Guest accounts</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<div class="text-content">
|
||||
{% if not realm or realm.plan_type == realm.PLAN_TYPE_SELF_HOSTED %}
|
||||
<div class="pricing-details">
|
||||
Free cloud service
|
||||
</div>
|
||||
<a href="/new/" class="button green">
|
||||
Create organization
|
||||
</a>
|
||||
{% elif realm.plan_type == realm.PLAN_TYPE_LIMITED or sponsorship_pending %}
|
||||
<div class="pricing-details"></div>
|
||||
<a href='/upgrade/' class="button black-current-value" type="button">
|
||||
Current plan
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="price-box" tabindex="-1">
|
||||
<div class="text-content">
|
||||
<h2>Standard</h2>
|
||||
<div class="description">
|
||||
Your team's collaboration hub.
|
||||
</div>
|
||||
<hr />
|
||||
<ul class="feature-list">
|
||||
<li>Unlimited search history</li>
|
||||
<li>File storage up to 10 GB per user</li>
|
||||
<li><a href="/help/message-retention-policy">Message retention policies</a></li>
|
||||
<li>Brand Zulip with your logo</li>
|
||||
<li>Priority commercial support</li>
|
||||
<li>Funds the Zulip open source project</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<div class="text-content">
|
||||
<div class="standard-price-box">
|
||||
<div class="price">6<span class="price-cents">.67</span></div>
|
||||
<div class="details">
|
||||
<span class="pricing-period">per user per month</span>
|
||||
<br />
|
||||
with annual billing discount
|
||||
<br />
|
||||
$8/month billed monthly
|
||||
</div>
|
||||
</div>
|
||||
{% if not realm %}
|
||||
<a href="/upgrade/" class="button green">
|
||||
{% if free_trial_days %}
|
||||
Start {{ free_trial_days }} day free trial
|
||||
{% else %}
|
||||
Upgrade to Standard
|
||||
{% endif %}
|
||||
</a>
|
||||
{% elif realm.plan_type in [realm.PLAN_TYPE_STANDARD, realm.PLAN_TYPE_STANDARD_FREE] %}
|
||||
<a href='/billing' class="button black-current-value" type="button">
|
||||
{% if realm_on_free_trial %}
|
||||
Current plan (free trial)
|
||||
{% else %}
|
||||
Current plan
|
||||
{% endif %}
|
||||
</a>
|
||||
{% elif sponsorship_pending %}
|
||||
<a href="/billing/" class="button black-current-value" type="button">
|
||||
Sponsorship pending
|
||||
</a>
|
||||
{% else %}
|
||||
<a href="/upgrade/" class="button green">
|
||||
{% if free_trial_days %}
|
||||
Start {{ free_trial_days }} day free trial
|
||||
{% else %}
|
||||
Upgrade to Standard
|
||||
{% endif %}
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="block">
|
||||
<div class="plan-title responsive-title">
|
||||
Self-host Zulip
|
||||
</div>
|
||||
|
||||
<div class="price-box" tabindex="-1">
|
||||
<div class="text-content">
|
||||
<h2>Free</h2>
|
||||
<div class="description">
|
||||
Retain full control over your data.
|
||||
</div>
|
||||
<hr />
|
||||
<ul class="feature-list">
|
||||
<li>All Zulip Cloud features included</li>
|
||||
<li>Friendly community support</li>
|
||||
<li><a href="https://zulip.readthedocs.io/en/stable/production/authentication-methods.html">SAML, OIDC, Google, social SSO</a></li>
|
||||
<li><a href="https://zulip.readthedocs.io/en/stable/production/authentication-methods.html#synchronizing-data">LDAP/Active Directory sync</a></li>
|
||||
<li>Advanced <a href="/help/roles-and-permissions">roles</a> and <a href="/help/stream-permissions">permissions</a></li>
|
||||
<li>Easy <a href="https://zulip.readthedocs.io/en/stable/production/install.html">installation</a>
|
||||
and <a href="https://zulip.readthedocs.io/en/stable/production/upgrade.html">maintenance</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<div class="text-content">
|
||||
<div class="pricing-details multi-line">
|
||||
Zulip is 100% free and open
|
||||
source, with no proprietary version. <br />
|
||||
</div>
|
||||
<a href="/self-hosting/" class="button green">
|
||||
Self-host Zulip
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="price-box" tabindex="-1">
|
||||
<div class="text-content">
|
||||
<h2>Enterprise</h2>
|
||||
<div class="description">
|
||||
For mission-critical installations.
|
||||
</div>
|
||||
<hr />
|
||||
<ul class="feature-list">
|
||||
<li>All Free features included</li>
|
||||
<li>Professional support with SLAs</li>
|
||||
<li>High availability</li>
|
||||
<li>Incident collaboration</li>
|
||||
<li>Advanced compliance</li>
|
||||
<li>Funds the Zulip open source project</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<div class="text-content">
|
||||
<div class="pricing-details multi-line">
|
||||
Affordable pricing depends on support required.
|
||||
</div>
|
||||
<a href="mailto:sales@zulip.com" target="_blank" rel="noopener noreferrer" class="no-action button green">
|
||||
Contact sales
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -1,4 +1,4 @@
|
|||
<div class="pricing-model">
|
||||
<div id="plans-and-pricing" class="pricing-model">
|
||||
<div class="padded-content">
|
||||
<h1>Zulip plans and pricing</h1>
|
||||
<div class="h1-subheader">
|
||||
|
|
|
@ -271,77 +271,10 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="feature-end">
|
||||
<div class="feature-pricing" id="feature-pricing-self-hosting">
|
||||
<h1 class="center"> Self-hosting plans </h1>
|
||||
<div class="pricing-model">
|
||||
<div class="padded-content">
|
||||
<div class="pricing-container">
|
||||
<div class="price-box" tabindex="-1">
|
||||
<div class="text-content">
|
||||
<h2>Free</h2>
|
||||
<div class="description">
|
||||
Retain full control over your data.
|
||||
</div>
|
||||
<hr />
|
||||
<ul class="feature-list">
|
||||
<li>All Zulip Cloud features included</li>
|
||||
<li>Friendly community support</li>
|
||||
<li><a href="https://zulip.readthedocs.io/en/stable/production/authentication-methods.html">SAML, OIDC, Google, social SSO</a></li>
|
||||
<li><a href="https://zulip.readthedocs.io/en/stable/production/authentication-methods.html#synchronizing-data">LDAP/Active Directory sync</a></li>
|
||||
<li>Advanced <a href="/help/roles-and-permissions">roles</a> and <a href="/help/stream-permissions">permissions</a></li>
|
||||
<li>Easy <a href="https://zulip.readthedocs.io/en/stable/production/install.html">installation</a>
|
||||
and <a href="https://zulip.readthedocs.io/en/stable/production/upgrade.html">maintenance</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<div class="text-content">
|
||||
<div class="pricing-details multi-line">
|
||||
Zulip is 100% free and open
|
||||
source, with no proprietary version. <br />
|
||||
</div>
|
||||
<a href="https://zulip.readthedocs.io/en/stable/production/install.html" class="button green">
|
||||
Install a Zulip server
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="price-box" tabindex="-1">
|
||||
<div class="text-content">
|
||||
<h2>Enterprise</h2>
|
||||
<div class="description">
|
||||
For mission-critical installations.
|
||||
</div>
|
||||
<hr />
|
||||
<ul class="feature-list">
|
||||
<li>All self service features included</li>
|
||||
<li>Professional support with SLAs</li>
|
||||
<li>High availability</li>
|
||||
<li>Incident collaboration</li>
|
||||
<li>Advanced compliance</li>
|
||||
<li>Funds the Zulip open source project</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<div class="text-content">
|
||||
<div class="pricing-details multi-line">
|
||||
Affordable pricing depends on support required.
|
||||
</div>
|
||||
<a href="mailto:sales@zulip.com" target="_blank" rel="noopener noreferrer" class="no-action button green">
|
||||
Contact sales
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="portico-pricing showing-self-hosted">
|
||||
{% include "corporate/pricing_model.html" %}
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -1063,623 +1063,3 @@ ul {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
.portico-pricing {
|
||||
--color-background-box: hsla(210deg 44% 92%);
|
||||
--color-background-box-muted: hsl(0deg 0% 100% / 50%);
|
||||
--color-plan-tab-header: hsl(223deg 40% 30%);
|
||||
--color-plan-tab-copy: hsl(223deg 40% 25% / 70%);
|
||||
--color-box-header: hsl(223deg 43% 25%);
|
||||
--color-box-copy: hsl(223deg 43% 25%);
|
||||
--color-link: hsl(210deg 94% 42%);
|
||||
--color-link-hover: hsl(210deg 100% 50%);
|
||||
--color-link-underline: hsl(210deg 94% 42% / 30%);
|
||||
--color-link-underline-hover: hsl(210deg 100% 50%);
|
||||
--color-link-underline-alternate: hsl(210deg 94% 100% / 40%);
|
||||
--color-link-underline-alternate-hover: hsla(210deg 94% 100% / 80%);
|
||||
--icon-left-outward-tab-curve: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' viewBox='0 0 16 16'%3e%3cpath fill='white' d='M0 16h16V0c0 8.837-7.163 16-16 16Z'/%3e%3c/svg%3e");
|
||||
--icon-right-outward-tab-curve: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' viewBox='0 0 16 16'%3e%3cpath fill='white' d='M16 16H0V0c0 8.837 7.163 16 16 16Z'/%3e%3c/svg%3e");
|
||||
--icon-question-header-swoosh: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='33' height='56' fill='none' viewBox='0 0 33 56'%3e%3cpath fill='%23E2EBF4' d='M33 37 1 56C1 35-3.5 0 33 0 7.5 3 7.776 37 33 37Z'/%3e%3c/svg%3e");
|
||||
--icon-current-plan-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' fill='none' viewBox='0 0 22 22'%3e%3cg fill='%230F8544'%3e%3cpath d='M14.396 9.813a.914.914 0 1 0-1.293-1.293l-3.02 3.02-1.186-1.186a.914.914 0 1 0-1.294 1.293l1.834 1.833a.914.914 0 0 0 1.293 0l3.666-3.667Z'/%3e%3cpath fill-rule='evenodd' d='M11 .923a4.58 4.58 0 0 0-3.495 1.62 4.581 4.581 0 0 0-4.961 4.949 4.58 4.58 0 0 0 0 7.016 4.58 4.58 0 0 0 4.96 4.949 4.583 4.583 0 0 0 7.003-.001 4.582 4.582 0 0 0 4.95-4.96 4.583 4.583 0 0 0 0-6.991 4.58 4.58 0 0 0-4.962-4.962A4.581 4.581 0 0 0 11 .923ZM9.678 3.09a2.752 2.752 0 0 1 3.64.932.914.914 0 0 0 .972.4 2.752 2.752 0 0 1 3.289 3.288.914.914 0 0 0 .4.971 2.753 2.753 0 0 1 0 4.638.914.914 0 0 0-.4.97 2.752 2.752 0 0 1-3.283 3.29.914.914 0 0 0-.97.401 2.75 2.75 0 0 1-4.644 0 .914.914 0 0 0-.971-.401 2.752 2.752 0 0 1-3.29-3.283.914.914 0 0 0-.403-.97 2.753 2.753 0 0 1 0-4.652.914.914 0 0 0 .404-.97A2.752 2.752 0 0 1 7.71 4.42a.914.914 0 0 0 .97-.4c.25-.389.592-.709.997-.93Z' clip-rule='evenodd'/%3e%3c/g%3e%3c/svg%3e");
|
||||
|
||||
padding: 102px 0 58px;
|
||||
background: linear-gradient(
|
||||
180deg,
|
||||
hsl(209deg 40% 50) 0%,
|
||||
hsl(210deg 48% 69%) 100%
|
||||
);
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
background: linear-gradient(
|
||||
180deg,
|
||||
hsl(209deg 63% 40%) 30%,
|
||||
hsl(238deg 28% 50%) 100%
|
||||
);
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-weight: 500;
|
||||
font-size: 58px;
|
||||
line-height: 110%;
|
||||
text-align: center;
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
.h1-subheader {
|
||||
font-family: var(--font-ops);
|
||||
font-weight: 400;
|
||||
font-size: 20px;
|
||||
line-height: 145%;
|
||||
text-align: center;
|
||||
font-feature-settings:
|
||||
"pnum" on,
|
||||
"lnum" on;
|
||||
color: hsl(0deg 0% 100%);
|
||||
max-width: 560px;
|
||||
padding: 0 10px;
|
||||
margin: 0 auto;
|
||||
|
||||
& a {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
border-bottom: 1px solid hsl(0deg 0% 100% / 50%);
|
||||
transition: border 0.4s ease-out;
|
||||
|
||||
&:hover {
|
||||
color: inherit;
|
||||
border-bottom: 2px solid hsl(0deg 0% 100%);
|
||||
transition: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
li {
|
||||
list-style-type: none;
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
/* Prevent flexbox from collapsing
|
||||
whitespace around links and other
|
||||
inline elements. */
|
||||
gap: 0.3em;
|
||||
|
||||
&::before {
|
||||
content: "";
|
||||
height: 6px;
|
||||
width: 6px;
|
||||
border-radius: 16px;
|
||||
/* 0.5333em, roughly 8px given the
|
||||
15px font-size on list items, will
|
||||
keep the bullet vertically centered
|
||||
with the first line of a list item
|
||||
as the page's text scales. */
|
||||
margin: 0.5333em 4px 0 0;
|
||||
/* Prevent "bullets" from being distorted
|
||||
on a multiline bullet point. */
|
||||
flex: 0 0 auto;
|
||||
background: currentcolor;
|
||||
opacity: 0.3;
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
color: var(--color-link);
|
||||
text-decoration: underline;
|
||||
text-decoration-color: var(--color-link-underline);
|
||||
text-underline-offset: 4px;
|
||||
|
||||
&:hover {
|
||||
color: var(--color-link-hover);
|
||||
text-decoration-color: var(--color-link-underline-hover);
|
||||
}
|
||||
}
|
||||
|
||||
.pricing-container {
|
||||
display: grid;
|
||||
grid-template:
|
||||
". . cloud-title self-hosted-title . . " auto
|
||||
"pricing pricing pricing pricing pricing pricing" auto / 56px 1fr minmax(
|
||||
0,
|
||||
420px
|
||||
)
|
||||
minmax(0, 420px) 1fr 56px;
|
||||
column-gap: 2px;
|
||||
margin: 50px auto 38px;
|
||||
|
||||
@media screen and (width <= 700px) {
|
||||
grid-template-columns:
|
||||
40px 1fr minmax(0, 420px)
|
||||
minmax(0, 420px) 1fr 40px;
|
||||
}
|
||||
}
|
||||
|
||||
.pricing-pane-scroll-container {
|
||||
grid-area: pricing;
|
||||
overflow-x: auto;
|
||||
scrollbar-width: none;
|
||||
}
|
||||
|
||||
.cloud-plan-title {
|
||||
grid-area: cloud-title;
|
||||
}
|
||||
|
||||
.cloud-plan-pricing {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
|
||||
grid-template-rows: auto;
|
||||
}
|
||||
|
||||
.self-hosted-plan-title {
|
||||
grid-area: self-hosted-title;
|
||||
}
|
||||
|
||||
.self-hosted-plan-pricing {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
|
||||
grid-template-rows: auto;
|
||||
}
|
||||
|
||||
.pricing-tab {
|
||||
cursor: pointer;
|
||||
background: var(--color-background-box);
|
||||
padding: 12px 12px 0;
|
||||
border-radius: 16px 16px 0 0;
|
||||
min-height: 40px;
|
||||
|
||||
h2 {
|
||||
color: var(--color-plan-tab-header);
|
||||
font-family: var(--font-ops);
|
||||
font-weight: 550;
|
||||
font-size: 30px;
|
||||
line-height: 32px;
|
||||
margin: 0;
|
||||
margin-bottom: 8px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
p {
|
||||
color: var(--color-plan-tab-copy);
|
||||
font-weight: 400;
|
||||
font-size: 16px;
|
||||
line-height: 125%;
|
||||
margin: 0;
|
||||
text-align: center;
|
||||
padding-bottom: 14px;
|
||||
|
||||
@media screen and (width <= 700px) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
/* Shared styles to handle tab curvature. */
|
||||
&::before {
|
||||
display: none;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
content: "";
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: -16px;
|
||||
background-color: var(--color-background-box);
|
||||
mask-position: center;
|
||||
mask-repeat: no-repeat;
|
||||
mask-image: var(--icon-left-outward-tab-curve);
|
||||
}
|
||||
|
||||
&::after {
|
||||
display: none;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
content: "";
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
right: -16px;
|
||||
background-color: var(--color-background-box);
|
||||
mask-position: center;
|
||||
mask-repeat: no-repeat;
|
||||
mask-image: var(--icon-right-outward-tab-curve);
|
||||
}
|
||||
}
|
||||
|
||||
.pricing-pane {
|
||||
padding: 20px;
|
||||
border-radius: 16px;
|
||||
color: var(--color-box-copy);
|
||||
background: var(--color-background-box);
|
||||
min-width: 850px;
|
||||
margin: 0 16px;
|
||||
|
||||
@media screen and (width <= 700px) {
|
||||
margin: 0 8px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-weight: 550;
|
||||
font-size: 28px;
|
||||
line-height: 1;
|
||||
padding-left: 14px;
|
||||
margin: 8px 0 16px;
|
||||
}
|
||||
|
||||
ul {
|
||||
font-family: var(--font-ops);
|
||||
font-weight: 400;
|
||||
font-size: 15px;
|
||||
line-height: 21px;
|
||||
}
|
||||
|
||||
li {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.price-box {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
border-right: 1px dashed hsl(223deg 40% 25% / 20%);
|
||||
|
||||
&:last-child {
|
||||
border-right: 0;
|
||||
}
|
||||
|
||||
.text-content {
|
||||
margin: 0 auto;
|
||||
}
|
||||
}
|
||||
|
||||
.text-content {
|
||||
padding: 0 16px;
|
||||
}
|
||||
|
||||
.bottom {
|
||||
/* Push to the bottom of the price box. */
|
||||
margin-top: auto;
|
||||
}
|
||||
|
||||
.standard-price-box {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
gap: 4px;
|
||||
min-height: 56px;
|
||||
margin-top: 24px;
|
||||
|
||||
.price {
|
||||
font-size: 38px;
|
||||
line-height: 1;
|
||||
letter-spacing: -1px;
|
||||
}
|
||||
|
||||
.currency-symbol {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.details p {
|
||||
margin: 2px 0 0;
|
||||
line-height: 17px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.additional-pricing-information {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
grid-template-rows: auto;
|
||||
column-gap: 32px;
|
||||
max-width: 912px;
|
||||
margin: 0 auto;
|
||||
|
||||
@media screen and (width <= 810px) {
|
||||
grid-template-columns: minmax(0, 456px);
|
||||
justify-content: center;
|
||||
row-gap: 32px;
|
||||
}
|
||||
|
||||
header {
|
||||
position: relative;
|
||||
padding: 0 16px 0 32px;
|
||||
|
||||
&::before {
|
||||
display: block;
|
||||
content: "";
|
||||
width: 32px;
|
||||
height: 56px;
|
||||
position: absolute;
|
||||
background-color: hsla(210deg 44% 92%);
|
||||
top: 30px;
|
||||
left: -0.5px;
|
||||
mask-position: center;
|
||||
mask-repeat: no-repeat;
|
||||
mask-image: var(--icon-question-header-swoosh);
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-family: var(--font-ops);
|
||||
font-weight: 500;
|
||||
font-size: 30px;
|
||||
line-height: 38px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
p {
|
||||
font-weight: 400;
|
||||
font-size: 16px;
|
||||
margin: 0;
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
a {
|
||||
color: inherit;
|
||||
text-decoration-color: var(--color-link-underline-alternate);
|
||||
|
||||
&:hover {
|
||||
text-decoration-color: var(
|
||||
--color-link-underline-alternate-hover
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.text-content {
|
||||
color: var(--color-box-copy);
|
||||
background: var(--color-background-box);
|
||||
padding: 20px 32px;
|
||||
border-radius: 16px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin: 0 0 6px;
|
||||
font-weight: 500;
|
||||
font-size: 22px;
|
||||
line-height: 28px;
|
||||
}
|
||||
|
||||
ul {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
li {
|
||||
font-size: 15px;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
p {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.sponsorship-button {
|
||||
display: block;
|
||||
font-weight: 550;
|
||||
font-size: 15px;
|
||||
line-height: 20px;
|
||||
text-align: center;
|
||||
padding: 8px 10px;
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
.contact-note {
|
||||
font-weight: 400;
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (width <= 500px) {
|
||||
.additional-pricing-information {
|
||||
margin: 0 8px;
|
||||
|
||||
header {
|
||||
padding-bottom: 29px;
|
||||
}
|
||||
|
||||
p {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.button {
|
||||
display: block;
|
||||
font-family: var(--font-ss3);
|
||||
font-weight: 550;
|
||||
font-size: 15px;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
letter-spacing: 0.06ch;
|
||||
padding: 8px 10px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.get-started-button {
|
||||
color: hsl(0deg 0% 100%);
|
||||
background-color: hsl(146deg 92% 26%);
|
||||
|
||||
&:hover {
|
||||
color: hsl(0deg 0% 100%);
|
||||
background-color: hsl(146deg 92% 24%);
|
||||
}
|
||||
}
|
||||
|
||||
.upgrade-button {
|
||||
color: hsl(0deg 0% 100%);
|
||||
background-color: hsl(219deg 62% 54%);
|
||||
|
||||
&:hover {
|
||||
color: hsl(0deg 0% 100%);
|
||||
background-color: hsl(219deg 62% 50%);
|
||||
}
|
||||
}
|
||||
|
||||
.current-plan-button {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 0.5ch;
|
||||
color: hsl(147deg 57% 25%);
|
||||
|
||||
&:hover {
|
||||
color: hsl(147deg 57% 25%);
|
||||
background-color: hsl(152deg 79% 24% / 14%);
|
||||
}
|
||||
|
||||
.current-plan-icon {
|
||||
width: 22px;
|
||||
height: 22px;
|
||||
display: block;
|
||||
background-color: currentcolor;
|
||||
mask-position: center;
|
||||
mask-repeat: no-repeat;
|
||||
mask-image: var(--icon-current-plan-icon);
|
||||
}
|
||||
}
|
||||
|
||||
.sponsorship-button {
|
||||
color: hsl(147deg 57% 25%);
|
||||
background-color: hsl(152deg 79% 24% / 10%);
|
||||
|
||||
&:hover {
|
||||
color: hsl(147deg 57% 25%);
|
||||
background-color: hsla(146deg 92% 24% / 15%);
|
||||
}
|
||||
}
|
||||
|
||||
&.showing-cloud {
|
||||
.pricing-container {
|
||||
max-width: 1100px;
|
||||
}
|
||||
|
||||
.self-hosted-scroll,
|
||||
.self-hosted-plan-pricing,
|
||||
.self-hosted-additional-pricing {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.cloud-plan-title {
|
||||
position: relative;
|
||||
|
||||
/* Show curvature on cloud tab. */
|
||||
&::before {
|
||||
display: block;
|
||||
}
|
||||
|
||||
&::after {
|
||||
display: block;
|
||||
}
|
||||
|
||||
p {
|
||||
border-bottom: 1px dashed hsl(223deg 40% 25% / 20%);
|
||||
margin: 0 10px;
|
||||
}
|
||||
|
||||
@media screen and (width <= 700px) {
|
||||
h2 {
|
||||
border-bottom: 1px dashed hsl(223deg 40% 25% / 20%);
|
||||
height: 100%;
|
||||
margin: 0 10px;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (width <= 500px) {
|
||||
h2 {
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.self-hosted-plan-title {
|
||||
border-radius: 16px 16px 0 14px;
|
||||
margin-bottom: 2px;
|
||||
background-color: var(--color-background-box-muted);
|
||||
}
|
||||
}
|
||||
|
||||
&.showing-self-hosted {
|
||||
.pricing-container {
|
||||
max-width: 960px;
|
||||
}
|
||||
|
||||
.cloud-scroll,
|
||||
.cloud-plan-pricing,
|
||||
.cloud-additional-pricing {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.cloud-plan-title {
|
||||
border-radius: 16px 16px 14px 0;
|
||||
margin-bottom: 2px;
|
||||
background-color: var(--color-background-box-muted);
|
||||
}
|
||||
|
||||
.self-hosted-plan-title {
|
||||
position: relative;
|
||||
|
||||
/* Show curvature on self-hosted tab. */
|
||||
&::before {
|
||||
display: block;
|
||||
}
|
||||
|
||||
&::after {
|
||||
display: block;
|
||||
}
|
||||
|
||||
p {
|
||||
border-bottom: 1px dashed hsl(223deg 40% 25% / 20%);
|
||||
margin: 0 10px;
|
||||
}
|
||||
|
||||
@media screen and (width <= 700px) {
|
||||
h2 {
|
||||
border-bottom: 1px dashed hsl(223deg 40% 25% / 20%);
|
||||
height: 100%;
|
||||
margin: 0 10px;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (width <= 500px) {
|
||||
h2 {
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.price-box {
|
||||
.text-content {
|
||||
max-width: 332px;
|
||||
}
|
||||
|
||||
.bottom .text-content {
|
||||
max-width: 268px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (width <= 940px) {
|
||||
h1 {
|
||||
font-size: 40px;
|
||||
}
|
||||
|
||||
.h1-subheader {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.pricing-tab h2 {
|
||||
font-size: 24px;
|
||||
line-height: 26px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.pricing-pane h2 {
|
||||
font-size: 22px;
|
||||
margin: 4px 0 12px;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (width <= 900px) {
|
||||
.additional-pricing-information header h2 {
|
||||
font-size: 24px;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (width <= 500px) {
|
||||
.pricing-tab h2 {
|
||||
font-size: 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1809,16 +1809,16 @@ button {
|
|||
color: hsl(0deg 0% 100%);
|
||||
}
|
||||
|
||||
.pricing-model .pricing-container {
|
||||
.for-education-pricing-model .pricing-container {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.pricing-model .pricing-container .block {
|
||||
.for-education-pricing-model .pricing-container .block {
|
||||
display: inline-block;
|
||||
margin: 40px 20px 20px;
|
||||
}
|
||||
|
||||
.pricing-model .pricing-container .block .plan-title {
|
||||
.for-education-pricing-model .pricing-container .block .plan-title {
|
||||
padding: 10px;
|
||||
margin-bottom: 3px;
|
||||
|
||||
|
@ -1828,33 +1828,15 @@ button {
|
|||
font-weight: 300;
|
||||
}
|
||||
|
||||
.pricing-model .pricing-container .price-box {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
vertical-align: bottom;
|
||||
margin: 0;
|
||||
width: 300px;
|
||||
height: 500px;
|
||||
|
||||
box-shadow: 0 0 10px hsl(0deg 0% 0% / 10%);
|
||||
|
||||
text-align: left;
|
||||
background-color: hsl(0deg 0% 100%);
|
||||
|
||||
transition-property: all;
|
||||
transition-duration: 0.3s;
|
||||
transition-timing-function: ease;
|
||||
}
|
||||
|
||||
.pricing-model .pricing-container .text-content {
|
||||
.for-education-pricing-model .pricing-container .text-content {
|
||||
margin: 18px;
|
||||
}
|
||||
|
||||
.pricing-model .padded-content .text-header .text-content h1 {
|
||||
.for-education-pricing-model .padded-content .text-header .text-content h1 {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.pricing-model .pricing-container .text-content h2 {
|
||||
.for-education-pricing-model .pricing-container .text-content h2 {
|
||||
font-size: 1.5em;
|
||||
font-weight: 400;
|
||||
margin-bottom: 0;
|
||||
|
@ -1862,25 +1844,25 @@ button {
|
|||
text-align: left;
|
||||
}
|
||||
|
||||
.pricing-model .pricing-container hr {
|
||||
.for-education-pricing-model .pricing-container hr {
|
||||
border: none;
|
||||
border-bottom: 2px solid hsl(170deg 47% 53%);
|
||||
margin: 15px 0;
|
||||
}
|
||||
|
||||
.pricing-model .pricing-container .text-content .description {
|
||||
.for-education-pricing-model .pricing-container .text-content .description {
|
||||
font-size: 0.9em;
|
||||
font-weight: 400;
|
||||
color: hsl(0deg 0% 53%);
|
||||
}
|
||||
|
||||
.pricing-model .pricing-container ul.feature-list {
|
||||
.for-education-pricing-model .pricing-container ul.feature-list {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.pricing-model .pricing-container ul.feature-list li {
|
||||
.for-education-pricing-model .pricing-container ul.feature-list li {
|
||||
position: relative;
|
||||
padding: 10px 0 10px 25px;
|
||||
|
||||
|
@ -1888,7 +1870,7 @@ button {
|
|||
font-weight: 400;
|
||||
}
|
||||
|
||||
.pricing-model .pricing-container ul.feature-list li::before {
|
||||
.for-education-pricing-model .pricing-container ul.feature-list li::before {
|
||||
content: " ";
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
|
@ -1904,7 +1886,7 @@ button {
|
|||
filter: invert(0.3);
|
||||
}
|
||||
|
||||
.pricing-model .pricing-container .bottom {
|
||||
.for-education-pricing-model .pricing-container .bottom {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
|
@ -1913,7 +1895,7 @@ button {
|
|||
background-color: hsl(0deg 0% 93%);
|
||||
}
|
||||
|
||||
.pricing-model .pricing-container .text-content .price::before {
|
||||
.for-education-pricing-model .pricing-container .text-content .price::before {
|
||||
content: "$";
|
||||
position: relative;
|
||||
vertical-align: top;
|
||||
|
@ -1925,7 +1907,7 @@ button {
|
|||
color: hsl(0deg 0% 53%);
|
||||
}
|
||||
|
||||
.pricing-model .pricing-container .text-content .price {
|
||||
.for-education-pricing-model .pricing-container .text-content .price {
|
||||
display: inline-block;
|
||||
margin-right: 2px;
|
||||
|
||||
|
@ -1935,7 +1917,7 @@ button {
|
|||
margin-top: 4px;
|
||||
}
|
||||
|
||||
.pricing-model .pricing-container .bottom .details {
|
||||
.for-education-pricing-model .pricing-container .bottom .details {
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
margin-left: 8px;
|
||||
|
@ -1949,7 +1931,7 @@ button {
|
|||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.pricing-model .pricing-container .bottom .button {
|
||||
.for-education-pricing-model .pricing-container .bottom .button {
|
||||
margin-top: 24px;
|
||||
display: block;
|
||||
text-align: center;
|
||||
|
@ -1959,16 +1941,19 @@ button {
|
|||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.pricing-model .pricing-container .price-box:focus {
|
||||
.for-education-pricing-model .pricing-container .price-box:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.pricing-model .pricing-container .price-box:focus .button {
|
||||
.for-education-pricing-model .pricing-container .price-box:focus .button {
|
||||
box-shadow: 0 0 25px hsl(169deg 48% 60%);
|
||||
animation: box-shadow-pulse 2s infinite;
|
||||
}
|
||||
|
||||
.pricing-model .pricing-container .text-content .standard-price-box {
|
||||
.for-education-pricing-model
|
||||
.pricing-container
|
||||
.text-content
|
||||
.standard-price-box {
|
||||
display: flex;
|
||||
height: 55px;
|
||||
|
||||
|
@ -1977,7 +1962,11 @@ button {
|
|||
}
|
||||
}
|
||||
|
||||
.pricing-model .pricing-container .text-content .price .price-cents {
|
||||
.for-education-pricing-model
|
||||
.pricing-container
|
||||
.text-content
|
||||
.price
|
||||
.price-cents {
|
||||
font-size: 0.4em;
|
||||
vertical-align: top;
|
||||
position: relative;
|
||||
|
@ -2090,7 +2079,7 @@ button {
|
|||
}
|
||||
|
||||
@media (width <= 1376px) {
|
||||
.portico-landing.plans .price-box {
|
||||
.portico-landing.plans .for-education-pricing-model .price-box {
|
||||
margin: 20px;
|
||||
}
|
||||
}
|
||||
|
@ -2262,7 +2251,8 @@ button {
|
|||
width: 100%;
|
||||
}
|
||||
|
||||
.portico-landing.why-page .padded-content {
|
||||
.portico-landing.why-page .padded-content,
|
||||
.portico-landing.why-page .for-education-pricing-model .padded-content {
|
||||
padding: 50px 20px;
|
||||
}
|
||||
|
||||
|
@ -2478,7 +2468,7 @@ button {
|
|||
}
|
||||
|
||||
@media (width <= 450px) {
|
||||
.portico-landing.plans .price-box {
|
||||
.portico-landing.plans .for-education-pricing-model .price-box {
|
||||
display: inline-flex;
|
||||
flex-direction: column;
|
||||
min-height: 500px;
|
||||
|
@ -2488,11 +2478,11 @@ button {
|
|||
margin: 10px 0;
|
||||
}
|
||||
|
||||
.pricing-model .pricing-container .text-content {
|
||||
.for-education-pricing-model .pricing-container .text-content {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.pricing-model .pricing-container .bottom {
|
||||
.for-education-pricing-model .pricing-container .bottom {
|
||||
position: static;
|
||||
height: auto;
|
||||
}
|
||||
|
@ -2957,7 +2947,7 @@ button {
|
|||
}
|
||||
}
|
||||
|
||||
.solutions-page .pricing-model {
|
||||
.solutions-page .for-education-pricing-model {
|
||||
.padded-content {
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
@ -2973,15 +2963,29 @@ button {
|
|||
}
|
||||
}
|
||||
|
||||
.for-education.pricing-model {
|
||||
.for-education-pricing-model {
|
||||
.pricing-details {
|
||||
color: inherit;
|
||||
font-style: inherit;
|
||||
}
|
||||
|
||||
.price-box {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
vertical-align: bottom;
|
||||
margin: 0;
|
||||
width: 300px;
|
||||
height: 625px;
|
||||
|
||||
box-shadow: 0 0 10px hsl(0deg 0% 0% / 10%);
|
||||
|
||||
text-align: left;
|
||||
background-color: hsl(0deg 0% 100%);
|
||||
|
||||
transition-property: all;
|
||||
transition-duration: 0.3s;
|
||||
transition-timing-function: ease;
|
||||
|
||||
.bottom {
|
||||
height: 275px;
|
||||
|
||||
|
@ -3057,7 +3061,7 @@ button {
|
|||
max-width: 800px;
|
||||
}
|
||||
|
||||
.pricing-model {
|
||||
.for-education-pricing-model {
|
||||
@media (width >= 768px) {
|
||||
.price-box {
|
||||
margin: 10px;
|
||||
|
@ -3264,7 +3268,7 @@ button {
|
|||
}
|
||||
}
|
||||
|
||||
.for-education.pricing-model .pricing-container .price-box {
|
||||
.for-education-pricing-model .pricing-container .price-box {
|
||||
height: 525px;
|
||||
|
||||
.bottom {
|
||||
|
|
|
@ -0,0 +1,638 @@
|
|||
.portico-pricing {
|
||||
--font-ss3: "Source Sans 3 VF", sans-serif;
|
||||
--font-ops: "Open Sans Variable", sans-serif;
|
||||
--color-background-box: hsla(210deg 44% 92%);
|
||||
--color-background-box-muted: hsl(0deg 0% 100% / 50%);
|
||||
--color-plan-tab-header: hsl(223deg 40% 30%);
|
||||
--color-plan-tab-copy: hsl(223deg 40% 25% / 70%);
|
||||
--color-box-header: hsl(223deg 43% 25%);
|
||||
--color-box-copy: hsl(223deg 43% 25%);
|
||||
--color-link: hsl(210deg 94% 42%);
|
||||
--color-link-hover: hsl(210deg 100% 50%);
|
||||
--color-link-underline: hsl(210deg 94% 42% / 30%);
|
||||
--color-link-underline-hover: hsl(210deg 100% 50%);
|
||||
--color-link-underline-alternate: hsl(210deg 94% 100% / 40%);
|
||||
--color-link-underline-alternate-hover: hsla(210deg 94% 100% / 80%);
|
||||
--icon-left-outward-tab-curve: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' viewBox='0 0 16 16'%3e%3cpath fill='white' d='M0 16h16V0c0 8.837-7.163 16-16 16Z'/%3e%3c/svg%3e");
|
||||
--icon-right-outward-tab-curve: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' viewBox='0 0 16 16'%3e%3cpath fill='white' d='M16 16H0V0c0 8.837 7.163 16 16 16Z'/%3e%3c/svg%3e");
|
||||
--icon-question-header-swoosh: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='33' height='56' fill='none' viewBox='0 0 33 56'%3e%3cpath fill='%23E2EBF4' d='M33 37 1 56C1 35-3.5 0 33 0 7.5 3 7.776 37 33 37Z'/%3e%3c/svg%3e");
|
||||
--icon-current-plan-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' fill='none' viewBox='0 0 22 22'%3e%3cg fill='%230F8544'%3e%3cpath d='M14.396 9.813a.914.914 0 1 0-1.293-1.293l-3.02 3.02-1.186-1.186a.914.914 0 1 0-1.294 1.293l1.834 1.833a.914.914 0 0 0 1.293 0l3.666-3.667Z'/%3e%3cpath fill-rule='evenodd' d='M11 .923a4.58 4.58 0 0 0-3.495 1.62 4.581 4.581 0 0 0-4.961 4.949 4.58 4.58 0 0 0 0 7.016 4.58 4.58 0 0 0 4.96 4.949 4.583 4.583 0 0 0 7.003-.001 4.582 4.582 0 0 0 4.95-4.96 4.583 4.583 0 0 0 0-6.991 4.58 4.58 0 0 0-4.962-4.962A4.581 4.581 0 0 0 11 .923ZM9.678 3.09a2.752 2.752 0 0 1 3.64.932.914.914 0 0 0 .972.4 2.752 2.752 0 0 1 3.289 3.288.914.914 0 0 0 .4.971 2.753 2.753 0 0 1 0 4.638.914.914 0 0 0-.4.97 2.752 2.752 0 0 1-3.283 3.29.914.914 0 0 0-.97.401 2.75 2.75 0 0 1-4.644 0 .914.914 0 0 0-.971-.401 2.752 2.752 0 0 1-3.29-3.283.914.914 0 0 0-.403-.97 2.753 2.753 0 0 1 0-4.652.914.914 0 0 0 .404-.97A2.752 2.752 0 0 1 7.71 4.42a.914.914 0 0 0 .97-.4c.25-.389.592-.709.997-.93Z' clip-rule='evenodd'/%3e%3c/g%3e%3c/svg%3e");
|
||||
|
||||
padding: 102px 0 58px;
|
||||
background: linear-gradient(
|
||||
180deg,
|
||||
hsl(209deg 40% 50) 0%,
|
||||
hsl(210deg 48% 69%) 100%
|
||||
);
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
background: linear-gradient(
|
||||
180deg,
|
||||
hsl(209deg 63% 40%) 30%,
|
||||
hsl(238deg 28% 50%) 100%
|
||||
);
|
||||
}
|
||||
|
||||
ul {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-weight: 500;
|
||||
font-size: 58px;
|
||||
line-height: 110%;
|
||||
text-align: center;
|
||||
color: hsl(0deg 0% 100%);
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
.h1-subheader {
|
||||
font-family: var(--font-ops);
|
||||
font-weight: 400;
|
||||
font-size: 20px;
|
||||
line-height: 145%;
|
||||
text-align: center;
|
||||
font-feature-settings:
|
||||
"pnum" on,
|
||||
"lnum" on;
|
||||
color: hsl(0deg 0% 100%);
|
||||
max-width: 560px;
|
||||
padding: 0 10px;
|
||||
margin: 0 auto;
|
||||
|
||||
& a {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
border-bottom: 1px solid hsl(0deg 0% 100% / 50%);
|
||||
transition: border 0.4s ease-out;
|
||||
|
||||
&:hover {
|
||||
color: inherit;
|
||||
border-bottom: 2px solid hsl(0deg 0% 100%);
|
||||
transition: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
li {
|
||||
list-style-type: none;
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
/* Prevent flexbox from collapsing
|
||||
whitespace around links and other
|
||||
inline elements. */
|
||||
gap: 0.3em;
|
||||
|
||||
&::before {
|
||||
content: "";
|
||||
height: 6px;
|
||||
width: 6px;
|
||||
border-radius: 16px;
|
||||
/* 0.5333em, roughly 8px given the
|
||||
15px font-size on list items, will
|
||||
keep the bullet vertically centered
|
||||
with the first line of a list item
|
||||
as the page's text scales. */
|
||||
margin: 0.5333em 4px 0 0;
|
||||
/* Prevent "bullets" from being distorted
|
||||
on a multiline bullet point. */
|
||||
flex: 0 0 auto;
|
||||
background: currentcolor;
|
||||
opacity: 0.3;
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
color: var(--color-link);
|
||||
text-decoration: underline;
|
||||
text-decoration-color: var(--color-link-underline);
|
||||
text-underline-offset: 4px;
|
||||
|
||||
&:hover {
|
||||
color: var(--color-link-hover);
|
||||
text-decoration-color: var(--color-link-underline-hover);
|
||||
}
|
||||
}
|
||||
|
||||
/* Remove padding introduced in landing_page.css */
|
||||
.padded-content {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
@media (width <= 768px) {
|
||||
.pricing-model .padded-content {
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.pricing-container {
|
||||
display: grid;
|
||||
grid-template:
|
||||
". . cloud-title self-hosted-title . . " auto
|
||||
"pricing pricing pricing pricing pricing pricing" auto / 56px 1fr minmax(
|
||||
0,
|
||||
420px
|
||||
)
|
||||
minmax(0, 420px) 1fr 56px;
|
||||
column-gap: 2px;
|
||||
margin: 50px auto 38px;
|
||||
|
||||
@media screen and (width <= 700px) {
|
||||
grid-template-columns:
|
||||
40px 1fr minmax(0, 420px)
|
||||
minmax(0, 420px) 1fr 40px;
|
||||
}
|
||||
}
|
||||
|
||||
.pricing-pane-scroll-container {
|
||||
grid-area: pricing;
|
||||
overflow-x: auto;
|
||||
scrollbar-width: none;
|
||||
}
|
||||
|
||||
.cloud-plan-title {
|
||||
grid-area: cloud-title;
|
||||
}
|
||||
|
||||
.cloud-plan-pricing {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
|
||||
grid-template-rows: auto;
|
||||
}
|
||||
|
||||
.self-hosted-plan-title {
|
||||
grid-area: self-hosted-title;
|
||||
}
|
||||
|
||||
.self-hosted-plan-pricing {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
|
||||
grid-template-rows: auto;
|
||||
}
|
||||
|
||||
.pricing-tab {
|
||||
cursor: pointer;
|
||||
background: var(--color-background-box);
|
||||
padding: 12px 12px 0;
|
||||
border-radius: 16px 16px 0 0;
|
||||
min-height: 40px;
|
||||
|
||||
h2 {
|
||||
color: var(--color-plan-tab-header);
|
||||
font-family: var(--font-ops);
|
||||
font-weight: 550;
|
||||
font-size: 30px;
|
||||
line-height: 32px;
|
||||
margin: 0;
|
||||
margin-bottom: 8px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
p {
|
||||
color: var(--color-plan-tab-copy);
|
||||
font-weight: 400;
|
||||
font-size: 16px;
|
||||
line-height: 125%;
|
||||
margin: 0;
|
||||
text-align: center;
|
||||
padding-bottom: 14px;
|
||||
|
||||
@media screen and (width <= 700px) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
/* Shared styles to handle tab curvature. */
|
||||
&::before {
|
||||
display: none;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
content: "";
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: -16px;
|
||||
background-color: var(--color-background-box);
|
||||
mask-position: center;
|
||||
mask-repeat: no-repeat;
|
||||
mask-image: var(--icon-left-outward-tab-curve);
|
||||
}
|
||||
|
||||
&::after {
|
||||
display: none;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
content: "";
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
right: -16px;
|
||||
background-color: var(--color-background-box);
|
||||
mask-position: center;
|
||||
mask-repeat: no-repeat;
|
||||
mask-image: var(--icon-right-outward-tab-curve);
|
||||
}
|
||||
}
|
||||
|
||||
.pricing-pane {
|
||||
padding: 20px;
|
||||
border-radius: 16px;
|
||||
color: var(--color-box-copy);
|
||||
background: var(--color-background-box);
|
||||
min-width: 850px;
|
||||
margin: 0 16px;
|
||||
|
||||
@media screen and (width <= 700px) {
|
||||
margin: 0 8px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-weight: 550;
|
||||
font-size: 28px;
|
||||
line-height: 1;
|
||||
padding-left: 14px;
|
||||
margin: 8px 0 16px;
|
||||
}
|
||||
|
||||
ul {
|
||||
font-family: var(--font-ops);
|
||||
font-weight: 400;
|
||||
font-size: 15px;
|
||||
line-height: 21px;
|
||||
}
|
||||
|
||||
li {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.price-box {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
border-right: 1px dashed hsl(223deg 40% 25% / 20%);
|
||||
|
||||
&:last-child {
|
||||
border-right: 0;
|
||||
}
|
||||
|
||||
.text-content {
|
||||
margin: 0 auto;
|
||||
}
|
||||
}
|
||||
|
||||
.text-content {
|
||||
padding: 0 16px;
|
||||
}
|
||||
|
||||
.bottom {
|
||||
/* Push to the bottom of the price box. */
|
||||
margin-top: auto;
|
||||
}
|
||||
|
||||
.standard-price-box {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
gap: 4px;
|
||||
min-height: 56px;
|
||||
margin-top: 24px;
|
||||
|
||||
.price {
|
||||
font-size: 38px;
|
||||
line-height: 1;
|
||||
letter-spacing: -1px;
|
||||
}
|
||||
|
||||
.currency-symbol {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.details p {
|
||||
margin: 2px 0 0;
|
||||
line-height: 17px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.additional-pricing-information {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
grid-template-rows: auto;
|
||||
column-gap: 32px;
|
||||
max-width: 912px;
|
||||
margin: 0 auto;
|
||||
|
||||
@media screen and (width <= 810px) {
|
||||
grid-template-columns: minmax(0, 456px);
|
||||
justify-content: center;
|
||||
row-gap: 32px;
|
||||
}
|
||||
|
||||
header {
|
||||
position: relative;
|
||||
padding: 0 16px 0 32px;
|
||||
|
||||
&::before {
|
||||
display: block;
|
||||
content: "";
|
||||
width: 32px;
|
||||
height: 56px;
|
||||
position: absolute;
|
||||
background-color: hsla(210deg 44% 92%);
|
||||
top: 30px;
|
||||
left: -0.5px;
|
||||
mask-position: center;
|
||||
mask-repeat: no-repeat;
|
||||
mask-image: var(--icon-question-header-swoosh);
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-family: var(--font-ops);
|
||||
font-weight: 500;
|
||||
font-size: 30px;
|
||||
line-height: 38px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
p {
|
||||
font-weight: 400;
|
||||
font-size: 16px;
|
||||
margin: 0;
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
a {
|
||||
color: inherit;
|
||||
text-decoration-color: var(--color-link-underline-alternate);
|
||||
|
||||
&:hover {
|
||||
text-decoration-color: var(
|
||||
--color-link-underline-alternate-hover
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.text-content {
|
||||
color: var(--color-box-copy);
|
||||
background: var(--color-background-box);
|
||||
padding: 20px 32px;
|
||||
border-radius: 16px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin: 0 0 6px;
|
||||
font-weight: 500;
|
||||
font-size: 22px;
|
||||
line-height: 28px;
|
||||
}
|
||||
|
||||
ul {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
li {
|
||||
font-size: 15px;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
p {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.sponsorship-button {
|
||||
display: block;
|
||||
font-weight: 550;
|
||||
font-size: 15px;
|
||||
line-height: 20px;
|
||||
text-align: center;
|
||||
padding: 8px 10px;
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
.contact-note {
|
||||
font-weight: 400;
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (width <= 500px) {
|
||||
.additional-pricing-information {
|
||||
margin: 0 8px;
|
||||
|
||||
header {
|
||||
padding-bottom: 29px;
|
||||
}
|
||||
|
||||
p {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.button {
|
||||
display: block;
|
||||
font-family: var(--font-ss3);
|
||||
font-weight: 550;
|
||||
font-size: 15px;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
letter-spacing: 0.06ch;
|
||||
padding: 8px 10px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.get-started-button {
|
||||
color: hsl(0deg 0% 100%);
|
||||
background-color: hsl(146deg 92% 26%);
|
||||
|
||||
&:hover {
|
||||
color: hsl(0deg 0% 100%);
|
||||
background-color: hsl(146deg 92% 24%);
|
||||
}
|
||||
}
|
||||
|
||||
.upgrade-button {
|
||||
color: hsl(0deg 0% 100%);
|
||||
background-color: hsl(219deg 62% 54%);
|
||||
|
||||
&:hover {
|
||||
color: hsl(0deg 0% 100%);
|
||||
background-color: hsl(219deg 62% 50%);
|
||||
}
|
||||
}
|
||||
|
||||
.current-plan-button {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 0.5ch;
|
||||
color: hsl(147deg 57% 25%);
|
||||
|
||||
&:hover {
|
||||
color: hsl(147deg 57% 25%);
|
||||
background-color: hsl(152deg 79% 24% / 14%);
|
||||
}
|
||||
|
||||
.current-plan-icon {
|
||||
width: 22px;
|
||||
height: 22px;
|
||||
display: block;
|
||||
background-color: currentcolor;
|
||||
mask-position: center;
|
||||
mask-repeat: no-repeat;
|
||||
mask-image: var(--icon-current-plan-icon);
|
||||
}
|
||||
}
|
||||
|
||||
.sponsorship-button {
|
||||
color: hsl(147deg 57% 25%);
|
||||
background-color: hsl(152deg 79% 24% / 10%);
|
||||
|
||||
&:hover {
|
||||
color: hsl(147deg 57% 25%);
|
||||
background-color: hsla(146deg 92% 24% / 15%);
|
||||
}
|
||||
}
|
||||
|
||||
&.showing-cloud {
|
||||
.pricing-container {
|
||||
max-width: 1100px;
|
||||
}
|
||||
|
||||
.self-hosted-scroll,
|
||||
.self-hosted-plan-pricing,
|
||||
.self-hosted-additional-pricing {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.cloud-plan-title {
|
||||
position: relative;
|
||||
|
||||
/* Show curvature on cloud tab. */
|
||||
&::before {
|
||||
display: block;
|
||||
}
|
||||
|
||||
&::after {
|
||||
display: block;
|
||||
}
|
||||
|
||||
p {
|
||||
border-bottom: 1px dashed hsl(223deg 40% 25% / 20%);
|
||||
margin: 0 10px;
|
||||
}
|
||||
|
||||
@media screen and (width <= 700px) {
|
||||
h2 {
|
||||
border-bottom: 1px dashed hsl(223deg 40% 25% / 20%);
|
||||
height: 100%;
|
||||
margin: 0 10px;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (width <= 500px) {
|
||||
h2 {
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.self-hosted-plan-title {
|
||||
border-radius: 16px 16px 0 14px;
|
||||
margin-bottom: 2px;
|
||||
background-color: var(--color-background-box-muted);
|
||||
}
|
||||
}
|
||||
|
||||
&.showing-self-hosted {
|
||||
.pricing-container {
|
||||
max-width: 960px;
|
||||
}
|
||||
|
||||
.cloud-scroll,
|
||||
.cloud-plan-pricing,
|
||||
.cloud-additional-pricing {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.cloud-plan-title {
|
||||
border-radius: 16px 16px 14px 0;
|
||||
margin-bottom: 2px;
|
||||
background-color: var(--color-background-box-muted);
|
||||
}
|
||||
|
||||
.self-hosted-plan-title {
|
||||
position: relative;
|
||||
|
||||
/* Show curvature on self-hosted tab. */
|
||||
&::before {
|
||||
display: block;
|
||||
}
|
||||
|
||||
&::after {
|
||||
display: block;
|
||||
}
|
||||
|
||||
p {
|
||||
border-bottom: 1px dashed hsl(223deg 40% 25% / 20%);
|
||||
margin: 0 10px;
|
||||
}
|
||||
|
||||
@media screen and (width <= 700px) {
|
||||
h2 {
|
||||
border-bottom: 1px dashed hsl(223deg 40% 25% / 20%);
|
||||
height: 100%;
|
||||
margin: 0 10px;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (width <= 500px) {
|
||||
h2 {
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.price-box {
|
||||
.text-content {
|
||||
max-width: 332px;
|
||||
}
|
||||
|
||||
.bottom .text-content {
|
||||
max-width: 268px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (width <= 940px) {
|
||||
h1 {
|
||||
font-size: 40px;
|
||||
}
|
||||
|
||||
.h1-subheader {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.pricing-tab h2 {
|
||||
font-size: 24px;
|
||||
line-height: 26px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.pricing-pane h2 {
|
||||
font-size: 22px;
|
||||
margin: 4px 0 12px;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (width <= 900px) {
|
||||
.additional-pricing-information header h2 {
|
||||
font-size: 24px;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (width <= 500px) {
|
||||
.pricing-tab h2 {
|
||||
font-size: 20px;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -51,7 +51,8 @@
|
|||
"landing-page": [
|
||||
"./src/bundles/portico",
|
||||
"./src/portico/landing-page",
|
||||
"./styles/portico/landing_page.css"
|
||||
"./styles/portico/landing_page.css",
|
||||
"./styles/portico/pricing_plans.css"
|
||||
],
|
||||
"landing-page-hello": [
|
||||
"./src/bundles/hello",
|
||||
|
@ -69,7 +70,8 @@
|
|||
"./src/portico/header",
|
||||
"./styles/portico/hello.css",
|
||||
"./styles/portico/navbar.css",
|
||||
"./styles/portico/footer.css"
|
||||
"./styles/portico/footer.css",
|
||||
"./styles/portico/pricing_plans.css"
|
||||
],
|
||||
"integrations": [
|
||||
"./src/bundles/portico",
|
||||
|
|
Loading…
Reference in New Issue