1 @import '~@proton/styles/scss/lib';
3 $amount-size: 34; // should be 36, but don't increase more than 34, otherwise we'll have some display issues.
7 &.modal-two-dialog--large {
8 // only increasing size for large case = when 3 plans
9 --size: #{em(1050)}; // 992 before, but increase to have feature copy on one line...
12 &.offer-modal--four-deals {
13 // larger case = when 4 plans
17 &.offer-modal--one-deal {
18 --size: #{em(820)}; // half image & content
22 @include media('>small') {
28 // kill scroll only for desktop
29 @include media('>small') {
30 .scroll-outer-vertical .scroll-inner,
39 inline-size: calc(100% + 4rem);
42 .offer-main-content-container {
49 overflow: overlay; // trick for Chrome Mac layout rendering for scrollbar
53 // for some promotions
55 @include media('<=small') {
56 inline-size: em(30); // just to avoid having images going to another next line on mobile
59 @include media('<=small') {
61 inline-size: em(30); // just to avoid having images going to another next line on mobile
66 // need to compensate modal paddings
67 &-modal &-main-wrapper {
69 margin-block-start: -0.5em;
70 @include media('<=small') {
74 // special case when deal title is not displayed
75 &--no-deal-title .offer-main-title {
76 margin-block-start: 1.5em;
79 &--left-banner .offer-plan-container {
80 max-inline-size: 30em; // to use more space for features when only 1 plan with a side image
84 &-modal:not(.offer-modal--one-deal) {
87 @include media('<=small') {
92 @include media('>small') {
93 .offer-close-button--dark {
94 color: white; // always above a banner, so hardcoded to white
100 &-side-image-container,
102 min-inline-size: 300px;
103 @include media('<=#{em(900, 16)}') {
104 min-inline-size: 250px;
108 &-main-wrapper--left-banner &-wrapper {
109 flex-direction: column;
112 .offer-plan-container:not(:first-child) {
113 margin-inline-start: 0;
117 // special 2x2 stacking for four plan case
118 &-main-wrapper--four-plans &-wrapper {
119 // special 2x2 stacking for four plan case
120 @include media('<=#{em(1200, 16)}') {
123 .offer-plan-container {
124 min-inline-size: calc(50% - 2em);
130 &--secondMostPopular {
134 &--thirdMostPopular {
138 &:not(:first-child) {
139 margin-inline-start: 0;
145 // contents of offers
148 font-variant: tabular-nums;
149 min-inline-size: 2em;
155 max-inline-size: 26em;
157 &:not(:first-child) {
158 margin-inline-start: 1em;
159 @include media('<=small') {
160 margin-inline-start: 0;
163 @include media('<=small') {
164 max-inline-size: none;
166 &--mostPopularOnMobile {
170 &--secondMostPopularOnMobile {
174 &--thirdMostPopularOnMobile {
178 &--fourthMostPopularOnMobile {
185 padding-inline: em(20);
186 @include media('<=#{em(850, 16)}') {
187 padding-inline: em(18);
189 @include media('<=small') {
190 padding-inline: em(24);
194 border-color: var(--focus-outline);
195 box-shadow: 0 0 0 #{$focus-ring-size} var(--focus-ring);
200 inset-inline-start: 50%;
201 transform: translateX(-50%) translateY(-50%);
202 max-inline-size: calc(100% - 1em); // just to avoid pill touching edge
207 transform: translateX(50%) translateY(-50%);
212 min-block-size: 1.5em;
214 // no need to keep space for 1 plan case
215 .offer-modal--one-deal &:empty {
219 // hidden when empty on mobile
220 @include media('<=small') {
228 .offer-modal:not(.offer-modal--one-deal) & {
229 @include media('<=#{em(850, 16)}') {
230 min-block-size: 6em; // proton unlimited on 2 lines
232 @include media('<=small') {
243 font-size: em($amount-size);
244 font-weight: var(--font-weight-bold);
245 @include media('<=#{em(1050, 16)}') {
248 @include media('<=#{em(770, 16)}') {
249 // fix for medium viewports
252 @include media('<=small') {
253 font-size: em($amount-size);
258 margin-inline-start: 0.5em;
259 color: var(--text-weak);
260 display: inline-block;
262 .offer-modal:not(.offer-modal--one-deal) & {
263 @include media('<=#{em(960, 16)}') {
264 min-inline-size: 100%;
266 inset-block-start: -0.5em;
268 @include media('<=small') {
275 &--suffix-new-line .suffix {
276 margin-inline-start: 0;
283 inset-block-start: -0.2em; // magic number to be a bit closer to real price and not CTA
293 inset-block-start: em(-2);