media/css/products/vpn/pricing-refresh.scss (327 lines of code) (raw):

// This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at https://mozilla.org/MPL/2.0/. @use '~@mozilla-protocol/core/protocol/css/includes/lib' as * with ($font-path: '/media/protocol/fonts', $image-path: '/media/protocol/img'); @use '~@mozilla-protocol/core/protocol/css/templates/multi-column'; @use '~@mozilla-protocol/core/protocol/css/components/logos/wordmark'; @use '~@mozilla-protocol/core/protocol/css/components/logos/wordmark-product-vpn'; @use 'includes/lib' as *; @use 'components/unsupported-language'; // * -------------------------------------------------------------------------- */ // Horizontal pricing (default) .c-pricing-main-header { margin-bottom: $layout-xl; text-align: center; .mzp-c-wordmark.mzp-t-product-vpn { background-image: url('/media/protocol/img/logos/mozilla/vpn/logo-word-hor.svg'); background-position: top center; margin: 0 auto $spacing-xl; } } .mozilla-vpn-pricing-page .c-pricing-main-header { margin-bottom: 0; padding-bottom: 0; } .c-pricing-details-heading { margin-bottom: $spacing-xl; @include font-size($vpn-title-2xs-size); @media #{$mq-md} { @include font-size($vpn-title-xs-size); } } .c-pricing-block { background: $color-marketing-gray-20; display: flex; flex-direction: column; justify-content: space-between; margin-bottom: $spacing-2xl; padding: $spacing-lg; } .c-pricing-block-header { position: relative; } .c-pricing-block-tag { background: $color-vpn-brand-refresh-purple-20; border-radius: $border-radius-md; color: $color-white; display: inline-block; font-weight: bold; padding: $spacing-xs $spacing-md; @include text-body-sm; html[lang^='en'] & { text-transform: uppercase; } @media #{$mq-lg} { position: absolute; top: 0; @include bidi(((left, 0, right, auto),)); } } .c-pricing-block-heading { border-bottom: 2px solid $color-black; padding-bottom: $spacing-xl; @include text-title-md; @media #{$mq-lg} { padding-top: $spacing-2xl; } } .c-pricing-block-detail { .mzp-c-button { text-align: center; width: 100%; } .c-guarantee { margin: $spacing-sm auto 0; } } .c-pricing-block-sub-heading { margin-bottom: $spacing-2xl; @include text-title-xs; } .c-pricing-block-saving { color: $color-vpn-brand-refresh-blue; font-weight: bold; margin-bottom: $spacing-sm; @include text-title-xs; } .c-pricing-block-total { color: $color-vpn-brand-refresh-gray; font-weight: bold; margin-bottom: $spacing-2xl; } .c-pricing-block-horizontal { @media #{$mq-lg} { .mzp-l-columns { grid-gap: $v-grid-sm $h-grid-sm; gap: $v-grid-sm $h-grid-sm; } } @media #{$mq-xl} { .mzp-l-columns { grid-gap: $v-grid-lg $h-grid-xl; gap: $v-grid-lg $h-grid-xl; } } @supports (--css: variables) { @media #{$mq-lg} { .mzp-l-columns { grid-gap: var(--v-grid-sm) var(--h-grid-sm); gap: var(--v-grid-sm) var(--h-grid-sm); } } @media #{$mq-xl} { .mzp-l-columns { grid-gap: var(--v-grid-lg) var(--h-grid-xl); gap: var(--v-grid-lg) var(--h-grid-xl); } } } } // * -------------------------------------------------------------------------- */ // FAQ Section .c-faq-section-heading { margin-bottom: $layout-xl; text-align: center; @include text-title-md; } .c-faq-item { border: 1px solid $color-black; margin-bottom: $spacing-xl; padding: $spacing-xl; } .c-faq-item-heading { &:hover { cursor: pointer; } h3 { margin-bottom: 0; @include bidi(( (text-align, left, right), )); @include text-title-xs; } } .c-faq-item-detail { margin: $spacing-xl 0 0; @include bidi(( (padding-right, $spacing-xl, padding-left, 0), )); } // * -------------------------------------------------------------------------- */ // Mobile only subscription CTA // QR Code scanning instructions show on wide view ports only. .vpn-pricing-desktop-instruction { background: $color-marketing-gray-20 url('/media/img/products/vpn/landing-refresh/icons/info.svg') no-repeat; border-radius: $border-radius-md; display: none; padding: $spacing-lg; @include bidi(( (background-position, left $spacing-md center, right $spacing-md center), (padding-left, 60px, padding-right, $spacing-lg), (text-align, left, right), )); @media #{$mq-md} { display: block; } } // Steps for signing up on mobile. .vpn-pricing-mobile-steps { counter-reset: vpn-mobile-step-counter; list-style: none; margin: $spacing-xl 0; li { counter-increment: vpn-mobile-step-counter; line-height: 40px; margin-bottom: $spacing-md; min-height: 40px; position: relative; @include bidi(( (padding-left, 40px + $spacing-md, padding-right, 0), (text-align, left, right), )); span { display: inline-block; line-height: normal; vertical-align: middle; } &::before { background: $color-marketing-gray-20; border-radius: 100%; content: counter(vpn-mobile-step-counter); display: inline-block; font-weight: bold; height: 40px; line-height: 40px; margin-top: -20px; position: absolute; text-align: center; top: 50%; width: 40px; @include bidi(( (left, 0, right, auto), )); } } li:nth-child(1)::before { background: $color-vpn-brand-refresh-purple-10; } @media #{$mq-md} { margin: $spacing-xl 0 $spacing-2xl; } } // QR Code image shown on wide view ports only. .vpn-pricing-mobile-qrcode-wrapper { display: none; margin: 0 auto; max-width: 480px; position: relative; .vpn-pricing-mobile-qrcode-image { left: 29%; position: absolute; right: 29%; top: 30%; svg { height: auto; width: 100%; } } .vpn-pricing-qrcode-background { display: block; margin: 0 auto; } @media #{$mq-md} { display: block; } } // Devices image shown on small view ports only. .vpn-pricing-devices-image { display: block; margin: 0 auto $spacing-lg; @media #{$mq-md} { display: none; } } // App store badges show on desktop devices. .vpn-pricing-mobile-badges li { display: inline-block; padding-top: $spacing-sm; } // Download app buttons shown on Android and iOS devices. .vpn-pricing-mobile-button { display: none; .ios-cta, .android-cta { display: none; } } // iOS platform detection logic. html.ios { .vpn-pricing-mobile-badges { display: none; } .vpn-pricing-mobile-button { display: block; .ios-cta { display: inline-block; } } } // Android platform detection logic. html.android { .vpn-pricing-mobile-badges { display: none; } .vpn-pricing-mobile-button { display: block; .android-cta { display: inline-block; } } } .vpn-pricing-mobile-unsupported-language { padding-top: 0; margin-top: -$spacing-2xl; } // Mobile subscription pricing display .c-pricing-block-mobile-wrapper { margin-top: $spacing-2xl; @media #{$mq-xl} { display: grid; grid-gap: $spacing-lg; grid-template-columns: repeat(2, 1fr); } } .c-pricing-block-mobile { background: $color-marketing-gray-20; border-radius: $border-radius-md; margin-bottom: $spacing-lg; padding: $spacing-md; position: relative; @include bidi(((text-align, left, right),)); } .c-pricing-block-mobile-tag { background: $color-vpn-brand-refresh-purple-20; border-radius: $border-radius-md; color: $color-white; display: inline-block; font-weight: bold; padding: $spacing-xs $spacing-md; @include text-body-sm; html[lang^='en'] & { text-transform: uppercase; } @media #{$mq-xl} { position: absolute; top: $spacing-md; @include bidi(((left, $spacing-md, right, auto),)); } } .c-pricing-block-mobile-heading { border-bottom: 2px solid $color-black; padding-bottom: $spacing-md; @include text-title-xs; @media #{$mq-xl} { margin-top: $spacing-2xl; } } .c-pricing-block-mobile-sub-heading { margin-bottom: 0; @include text-title-xs; .vpn-monthly-price-display span { display: inline-block; font-weight: normal; @include bidi(((margin-left, 0.2em, margin-right, 0),)); @include text-body-md; } } .c-pricing-block-mobile-currency-info { margin: $spacing-lg 0 0; @include text-body-sm; } .c-pricing-block-mobile-total { color: $color-vpn-brand-refresh-gray; font-weight: bold; margin: $spacing-lg 0 0; }