plans.scss 38 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543
  1. @use 'sass:math';
  2. $container-plans-responsive-width: 95%;
  3. $container-xl: 1280px;
  4. $z-index-plans-new-tabs-content: 0;
  5. $z-index-plans-new-tabs: 1;
  6. $highlighted-heading-line-height: 24px;
  7. $highlighted-heading-padding-vertical: $spacing-02;
  8. $highlighted-heading-height: (
  9. $highlighted-heading-line-height + (2 * $highlighted-heading-padding-vertical)
  10. );
  11. $switcher-container-margin-bottom: $highlighted-heading-height + $spacing-10;
  12. $table-4-column-width: 25%;
  13. $table-5-column-width: 20%;
  14. $nondiscounted-price-element-height: var(--line-height-02);
  15. $group-member-picker-height: 24px;
  16. $group-member-picker-top-height: 36px;
  17. $z-index-group-member-picker-list: 1;
  18. .plans-new-design {
  19. --border-width-base: 3px; // TODO: put this variable in a decent location
  20. padding-top: $header-height;
  21. overflow: unset;
  22. .container {
  23. padding: 0 var(--spacing-06);
  24. @include media-breakpoint-up(md) {
  25. width: $container-plans-responsive-width;
  26. }
  27. @include media-breakpoint-up(xxl) {
  28. width: $container-xl;
  29. }
  30. .geo-banner-container {
  31. margin-top: var(--spacing-08);
  32. }
  33. .plans-new-design-content-spacing {
  34. margin-top: var(--spacing-16);
  35. }
  36. .interstitial-new-design-content-spacing {
  37. margin-top: var(--spacing-13);
  38. }
  39. }
  40. .main-heading-section {
  41. text-align: center;
  42. max-width: 885px;
  43. margin-left: auto;
  44. margin-right: auto;
  45. @include media-breakpoint-down(md) {
  46. text-align: left;
  47. padding: 0 16px;
  48. }
  49. .plans-page-heading {
  50. margin-top: 8px;
  51. margin-bottom: unset;
  52. font-size: 3rem;
  53. font-weight: 600;
  54. line-height: 64px;
  55. @include media-breakpoint-down(md) {
  56. font-size: 2.25rem;
  57. line-height: 48px;
  58. padding-right: 5rem;
  59. }
  60. }
  61. .plans-page-sub-heading {
  62. font-size: 1.125rem;
  63. line-height: 24px;
  64. margin-top: 16px;
  65. margin-bottom: unset;
  66. }
  67. }
  68. .plans-new-content {
  69. display: flex;
  70. flex-direction: column;
  71. align-items: center;
  72. position: relative;
  73. @include media-breakpoint-up(md) {
  74. border-left: 1px solid var(--border-divider);
  75. border-right: 1px solid var(--border-divider);
  76. border-bottom: 1px solid var(--border-divider);
  77. border-radius: 8px;
  78. }
  79. // this is the border between the tabs and the content, specifically on the left and right side
  80. // this is necessary to enable top border radius on the plans-new-content
  81. &::before {
  82. content: '';
  83. display: block;
  84. z-index: $z-index-plans-new-tabs-content;
  85. position: absolute;
  86. top: -1px; // make border overlap with the border on .plans-new-tabs
  87. width: 100%;
  88. height: 20px; // arbitrary height since it's transparent, make sure that it's bigger than border radius
  89. background: transparent;
  90. border-top: 1px solid var(--border-divider);
  91. @include media-breakpoint-up(md) {
  92. border-top-left-radius: 8px;
  93. border-top-right-radius: 8px;
  94. }
  95. }
  96. }
  97. .plans-new-tabs-container {
  98. z-index: $z-index-plans-new-tabs;
  99. margin-top: var(--spacing-16);
  100. // explicit padding to tell that the bottom left and bottom right
  101. // does not have bottom border defined in .plans-new-tabs
  102. // technically unnecessary because padding is already defined in bootstrap column
  103. padding: 0 16px;
  104. }
  105. .plans-new-tabs {
  106. display: flex;
  107. justify-content: center;
  108. gap: 8px;
  109. border-bottom: 1px solid var(--border-divider);
  110. .plans-new-tab {
  111. cursor: pointer;
  112. font-size: 16px;
  113. font-weight: 600;
  114. border-top-right-radius: 8px;
  115. border-top-left-radius: 8px;
  116. margin-bottom: -1px; // to overlap with the border on .plans-new-tabs to avoid double border
  117. .plans-new-tab-link {
  118. display: flex;
  119. align-items: center;
  120. color: var(--content-secondary);
  121. margin: 0;
  122. border-top-right-radius: 8px;
  123. border-top-left-radius: 8px;
  124. /* stylelint-disable-next-line declaration-block-no-duplicate-properties */
  125. border: 1px solid var(--border-divider);
  126. padding: var(--spacing-05) var(--spacing-08);
  127. gap: var(--spacing-04);
  128. text-decoration: unset;
  129. &:focus {
  130. background-color: unset;
  131. outline: 0;
  132. }
  133. &:hover {
  134. background-color: var(--neutral-20);
  135. }
  136. .group-discount-bubble {
  137. padding: var(--spacing-01) var(--spacing-04);
  138. background-color: var(--green-10);
  139. color: var(--green-50);
  140. border-radius: var(--border-radius-full);
  141. font-family: 'DM Mono', monospace;
  142. font-feature-settings: 'ss05';
  143. font-size: var(--font-size-01);
  144. line-height: var(--line-height-01);
  145. font-weight: 500;
  146. @include media-breakpoint-down(md) {
  147. display: none;
  148. }
  149. }
  150. @include media-breakpoint-down(md) {
  151. font-size: var(--font-size-02);
  152. line-height: var(--line-height-02);
  153. padding: var(--spacing-05);
  154. gap: var(--spacing-02);
  155. }
  156. }
  157. &:has(.active) {
  158. .plans-new-tab-link {
  159. border: 1px solid white;
  160. position: relative;
  161. color: var(--green-50);
  162. // remove the border on tab focus
  163. &:focus-visible {
  164. &::before {
  165. content: unset;
  166. }
  167. }
  168. &::before {
  169. content: '';
  170. position: absolute;
  171. background: border-box
  172. linear-gradient(
  173. to bottom,
  174. $green-50 0%,
  175. $neutral-20 85%,
  176. $neutral-20 100%
  177. );
  178. /* stylelint-disable-next-line property-no-vendor-prefix */
  179. -webkit-mask:
  180. linear-gradient(white 0 0) padding-box,
  181. linear-gradient(white 0 0);
  182. mask:
  183. linear-gradient(white 0 0) padding-box,
  184. linear-gradient(white 0 0);
  185. /* stylelint-disable-next-line property-no-vendor-prefix */
  186. -webkit-mask-composite: xor;
  187. mask-composite: exclude;
  188. border-top-right-radius: 8px;
  189. border-top-left-radius: 8px;
  190. border: 1px solid transparent;
  191. border-bottom: 1px solid white;
  192. // make the border overlap with the .plans-new-tab-link border
  193. top: 0;
  194. bottom: -2px;
  195. left: -1px;
  196. /* stylelint-disable-next-line declaration-block-no-redundant-longhand-properties */
  197. right: -1px;
  198. }
  199. &:hover {
  200. background-color: unset;
  201. }
  202. }
  203. .plans-new-discount-badge {
  204. background-color: var(--green-10);
  205. color: var(--green-60);
  206. }
  207. }
  208. }
  209. }
  210. .plans-new-period-switcher-container {
  211. position: relative;
  212. display: inline-flex;
  213. background-color: var(--bg-light-secondary);
  214. border-radius: var(--border-radius-full);
  215. padding: var(--spacing-03);
  216. margin-top: var(--spacing-09);
  217. margin-bottom: $switcher-container-margin-bottom;
  218. gap: var(--spacing-04);
  219. @include media-breakpoint-down(md) {
  220. margin-bottom: var(--spacing-09);
  221. }
  222. label {
  223. display: inline-flex;
  224. align-items: center;
  225. margin: 0;
  226. font-size: var(--font-size-05);
  227. font-weight: 600;
  228. line-height: var(--line-height-04);
  229. text-align: center;
  230. padding: var(--spacing-01) var(--spacing-04);
  231. border-radius: var(--border-radius-full);
  232. &:hover {
  233. background-color: var(--neutral-20);
  234. cursor: pointer;
  235. }
  236. }
  237. input[type='radio'] {
  238. position: absolute;
  239. left: -9999px;
  240. &:focus,
  241. &:focus-visible {
  242. outline: 0;
  243. }
  244. }
  245. input[type='radio']:focus-visible + label,
  246. input[type='radio']:checked:focus-visible + label {
  247. @include box-shadow-button-input;
  248. }
  249. input[type='radio']:checked + label {
  250. background-color: var(--green-50);
  251. color: white;
  252. /* stylelint-disable-next-line length-zero-no-unit, color-function-notation, alpha-value-notation */
  253. box-shadow: 0px 2px 4px 0px rgba(30, 37, 48, 0.16);
  254. .plans-new-discount-badge {
  255. background-color: var(--green-10);
  256. color: var(--green-60);
  257. }
  258. }
  259. .plans-new-discount-badge {
  260. margin-left: var(--spacing-03);
  261. }
  262. }
  263. .plans-new-discount-badge {
  264. font-size: var(--font-size-01);
  265. font-family: 'DM Mono', monospace;
  266. padding: 2px 8px;
  267. height: 20px;
  268. border-radius: 10px;
  269. background-color: var(--neutral-70);
  270. color: white;
  271. display: flex;
  272. align-items: center;
  273. font-weight: 500;
  274. line-height: var(--line-height-01);
  275. }
  276. .plans-new-tab-content {
  277. width: 100%;
  278. border: none;
  279. padding-top: 0;
  280. @include media-breakpoint-down(md) {
  281. padding: 0;
  282. }
  283. }
  284. .plans-new-mobile {
  285. display: none;
  286. @include media-breakpoint-down(md) {
  287. display: block;
  288. }
  289. }
  290. .plans-new-desktop {
  291. display: block;
  292. @include media-breakpoint-down(md) {
  293. display: none;
  294. }
  295. }
  296. .group-discount-banner {
  297. border: 1px solid var(--neutral-20);
  298. border-radius: var(--border-radius-base);
  299. width: 50%;
  300. max-width: 576px;
  301. margin: auto;
  302. margin-top: var(--spacing-06);
  303. margin-bottom: var(--spacing-10);
  304. display: flex;
  305. gap: var(--spacing-06);
  306. padding: var(--spacing-06);
  307. @include media-breakpoint-down(md) {
  308. width: 100%;
  309. }
  310. .group-icon {
  311. flex-grow: 2;
  312. }
  313. .text-and-cta {
  314. flex-grow: 8;
  315. display: flex;
  316. gap: var(--spacing-06);
  317. @include media-breakpoint-down(lg) {
  318. flex-direction: column;
  319. }
  320. .group-discount-text {
  321. flex-grow: 6;
  322. p {
  323. margin-bottom: 0;
  324. }
  325. h3 {
  326. margin-top: 0;
  327. }
  328. .group-discount-text-heading {
  329. font-size: var(--font-size-03);
  330. font-weight: 600;
  331. line-height: var(--line-height-02);
  332. margin-bottom: var(--spacing-02);
  333. color: var(--neutral-90);
  334. }
  335. }
  336. .group-discount-cta {
  337. flex-grow: 3;
  338. }
  339. }
  340. }
  341. .plans-new-table {
  342. width: 100%;
  343. // keep the borders separate to help with spacing and alignment in the CTAs
  344. border-collapse: separate;
  345. border-spacing: 0;
  346. th,
  347. td {
  348. width: $table-4-column-width;
  349. }
  350. }
  351. .plans-new-table-student {
  352. margin-left: math.div($table-4-column-width, 2);
  353. }
  354. .plans-new-table-student-verification {
  355. font-weight: 600;
  356. font-size: var(--font-size-01);
  357. text-align: center;
  358. }
  359. .plans-new-table-group {
  360. margin-top: $spacing-11 + $highlighted-heading-height;
  361. }
  362. thead th {
  363. position: relative;
  364. padding: var(--spacing-06) var(--spacing-08) var(--spacing-04)
  365. var(--spacing-08);
  366. font-size: var(--font-size-05);
  367. font-weight: 600;
  368. line-height: var(--line-height-04);
  369. color: var(--content-primary);
  370. text-align: center;
  371. @include media-breakpoint-down(md) {
  372. padding: var(--spacing-05) var(--spacing-05) 0 var(--spacing-05);
  373. }
  374. }
  375. .plans-new-table-subheader {
  376. vertical-align: top;
  377. padding: 0 var(--spacing-08);
  378. @include media-breakpoint-down(xl) {
  379. padding: 0 var(--spacing-05);
  380. }
  381. &.plans-new-table-icon-cta-cell,
  382. &.plans-subheader-monthly-cta {
  383. vertical-align: bottom;
  384. }
  385. }
  386. .plans-new-table-cta-row {
  387. td {
  388. padding-bottom: var(--spacing-06);
  389. @include media-breakpoint-down(xl) {
  390. padding-bottom: var(--spacing-05);
  391. }
  392. // use transparent borders to use the same spacing as highlighted cells
  393. &:not(.plans-new-table-highlighted-cell) {
  394. border-right: var(--border-width-base) solid transparent;
  395. border-left: var(--border-width-base) solid transparent;
  396. }
  397. }
  398. .plans-cta + .plans-cta {
  399. margin-top: var(--spacing-04);
  400. }
  401. }
  402. .plans-new-table-header-grid-container {
  403. display: flex;
  404. flex-direction: column;
  405. align-items: center;
  406. s,
  407. .match-original-price-height {
  408. font-size: var(--font-size-02);
  409. line-height: $nondiscounted-price-element-height;
  410. color: var(--neutral-60);
  411. font-weight: 600;
  412. }
  413. .plans-new-table-header-price {
  414. font-size: var(--font-size-08);
  415. font-weight: 600;
  416. line-height: var(--line-height-07);
  417. color: var(--content-primary);
  418. }
  419. .plans-new-table-header-price-unit {
  420. font-size: var(--font-size-02);
  421. line-height: var(--line-height-02);
  422. text-align: center;
  423. }
  424. .plans-new-table-cta {
  425. margin-top: auto;
  426. a:nth-child(2) {
  427. margin-top: var(--spacing-04);
  428. }
  429. }
  430. .plans-new-table-header-icon {
  431. font-size: 56px;
  432. color: var(--content-primary);
  433. }
  434. }
  435. .plans-new-table-header-price-unit-total {
  436. font-size: var(--font-size-01);
  437. line-height: var(--line-height-01);
  438. }
  439. .plans-new-table-header-desc {
  440. margin-top: var(--spacing-05);
  441. margin-bottom: var(--spacing-08);
  442. font-size: var(--font-size-02);
  443. line-height: var(--line-height-02);
  444. }
  445. .plans-new-group-member-picker {
  446. .plans-new-group-member-picker-text {
  447. font-size: var(--font-size-02);
  448. line-height: var(--line-height-02);
  449. font-weight: 600;
  450. margin-bottom: var(--spacing-02);
  451. }
  452. .plans-new-group-member-picker-form {
  453. position: relative;
  454. .plans-new-group-member-picker-button {
  455. width: 100%;
  456. background-color: white;
  457. border-radius: var(--border-radius-base-new);
  458. border: 1px solid var(--neutral-60);
  459. display: flex;
  460. align-items: center;
  461. justify-content: space-between;
  462. padding: var(--spacing-01) var(--spacing-03);
  463. margin-bottom: var(--spacing-04);
  464. height: $group-member-picker-height;
  465. font-size: var(--font-size-02);
  466. line-height: var(--line-height-02);
  467. &[aria-expanded='true'] {
  468. i {
  469. transform: rotate(180deg);
  470. transition: transform 0.35s ease;
  471. }
  472. }
  473. &[aria-expanded='false'] {
  474. i {
  475. transition: transform 0.35s ease;
  476. }
  477. }
  478. &[data-ol-plans-new-group-member-picker-button='group-all'] {
  479. height: $group-member-picker-top-height;
  480. }
  481. .material-symbols {
  482. pointer-events: none;
  483. }
  484. }
  485. ul.plans-new-group-member-picker-list {
  486. list-style-type: none;
  487. margin-bottom: 0;
  488. overflow: auto; // to enable box-shadow
  489. /* stylelint-disable-next-line length-zero-no-unit, color-function-notation, alpha-value-notation */
  490. box-shadow: 0px 2px 4px 0px rgba(30, 37, 48, 0.16);
  491. padding: var(--spacing-02);
  492. position: absolute;
  493. top: $group-member-picker-height;
  494. background-color: white;
  495. width: 100%;
  496. margin-top: var(--spacing-01);
  497. z-index: $z-index-group-member-picker-list;
  498. &[data-ol-plans-new-group-member-picker-dropdown='group-all'] {
  499. top: $group-member-picker-top-height;
  500. }
  501. }
  502. li.plans-new-group-member-picker-footer {
  503. font-size: var(--font-size-02);
  504. line-height: var(--line-height-02);
  505. padding: var(--spacing-05) var(--spacing-04);
  506. span {
  507. display: block;
  508. }
  509. button {
  510. font-weight: 400;
  511. padding: 0;
  512. font-size: var(--font-size-02);
  513. line-height: var(--line-height-02);
  514. }
  515. }
  516. li {
  517. position: relative;
  518. &:not(:last-child) {
  519. margin-bottom: var(--spacing-02);
  520. }
  521. &:not(.plans-new-group-member-picker-footer):hover {
  522. input[type='radio']:not(:checked) + p {
  523. background-color: var(--bg-light-secondary);
  524. }
  525. }
  526. input[type='radio'] {
  527. position: absolute;
  528. opacity: 0;
  529. cursor: pointer;
  530. &:focus + p {
  531. @extend %input-focus-style;
  532. }
  533. + p {
  534. padding: var(--spacing-05) var(--spacing-08) var(--spacing-05)
  535. var(--spacing-04);
  536. margin-bottom: 0;
  537. border-radius: var(--border-radius-base-new);
  538. }
  539. }
  540. input[type='radio']:checked + p {
  541. background-color: var(--green-10);
  542. color: var(--green-70);
  543. position: relative;
  544. word-wrap: break-word;
  545. &::after {
  546. content: url(../../../public/img/material-icons/check-green-20.svg);
  547. position: absolute;
  548. right: 12px;
  549. top: 50%;
  550. transform: translateY(-50%);
  551. @include media-breakpoint-down(md) {
  552. right: var(--spacing-04);
  553. }
  554. }
  555. }
  556. label {
  557. width: 100%;
  558. font-size: var(--font-size-02);
  559. line-height: var(--line-height-02);
  560. margin-bottom: var(--spacing-00);
  561. font-weight: 400;
  562. cursor: pointer;
  563. border-radius: var(--border-radius-base-new);
  564. .list-item-footer {
  565. font-size: var(--font-size-01);
  566. line-height: var(--line-height-01);
  567. }
  568. }
  569. }
  570. .plans-new-edu-discount {
  571. display: flex;
  572. align-items: flex-start;
  573. gap: var(--spacing-04);
  574. margin-bottom: var(--spacing-06);
  575. font-weight: 400;
  576. input[type='checkbox'] {
  577. margin: var(--spacing-02);
  578. accent-color: var(--green-50);
  579. &:focus-visible {
  580. @include box-shadow-button-input;
  581. }
  582. }
  583. .plans-new-edu-discount-content {
  584. display: flex;
  585. flex-direction: column;
  586. span {
  587. line-height: var(--line-height-03);
  588. color: var(--content-primary);
  589. }
  590. small {
  591. color: var(--content-secondary);
  592. font-size: var(--font-size-01);
  593. line-height: var(--line-height-01);
  594. }
  595. }
  596. }
  597. }
  598. }
  599. .plans-new-table-body:last-of-type {
  600. .plans-new-table-feature-row:last-of-type {
  601. .plans-new-table-feature-td.plans-new-table-highlighted-cell {
  602. border-bottom: var(--border-width-base) solid var(--green-50);
  603. }
  604. }
  605. }
  606. .plans-new-table-heading-row {
  607. // this means min-height, min-height does not work in table layout
  608. // https://stackoverflow.com/questions/7790222
  609. height: 64px;
  610. }
  611. .plans-new-table-heading-text {
  612. padding: var(--spacing-05) var(--spacing-08) var(--spacing-05)
  613. var(--spacing-05);
  614. font-weight: 600;
  615. font-size: var(--font-size-04);
  616. line-height: var(--line-height-03);
  617. vertical-align: bottom;
  618. }
  619. .plans-new-table-feature-row {
  620. &:nth-child(even) {
  621. background-color: var(--bg-light-secondary);
  622. }
  623. }
  624. .plans-new-table-section-without-header-row {
  625. &:nth-child(odd):not(.plans-new-table-heading-row) {
  626. background-color: var(--bg-light-secondary);
  627. }
  628. &:nth-child(even):not(.plans-new-table-heading-row) {
  629. background-color: var(--white);
  630. }
  631. }
  632. .plans-new-table-feature-th {
  633. font-weight: normal;
  634. padding: var(--spacing-05) var(--spacing-08) var(--spacing-05)
  635. var(--spacing-05);
  636. .plans-new-table-feature-th-content {
  637. line-height: var(--line-height-03);
  638. display: flex;
  639. justify-content: space-between;
  640. align-items: center;
  641. .plans-new-table-feature-tooltip-icon {
  642. cursor: help;
  643. margin-left: var(--spacing-05);
  644. }
  645. .tooltip.in {
  646. opacity: 1;
  647. }
  648. .tooltip-inner {
  649. padding: var(--spacing-04) var(--spacing-06);
  650. max-width: 258px;
  651. width: 258px;
  652. font-family: Lato, sans-serif;
  653. font-size: var(--font-size-02);
  654. text-align: left;
  655. background-color: var(--content-primary);
  656. border-radius: var(--border-radius-base-new);
  657. }
  658. }
  659. }
  660. .plans-new-table-feature-td {
  661. padding: var(--spacing-05) var(--spacing-08);
  662. text-align: center;
  663. line-height: var(--line-height-03);
  664. .green-round-background {
  665. margin-right: 0;
  666. }
  667. }
  668. .plans-new-table-highlighted-heading {
  669. position: absolute;
  670. left: calc(-1 * var(--border-width-base));
  671. top: -1 * $highlighted-heading-height;
  672. height: $highlighted-heading-height;
  673. width: calc(100% + (2 * var(--border-width-base)));
  674. border-top-left-radius: var(--border-radius-large);
  675. border-top-right-radius: var(--border-radius-large);
  676. padding: $highlighted-heading-padding-vertical var(--spacing-04);
  677. font-weight: 600;
  678. text-align: center;
  679. line-height: $highlighted-heading-line-height;
  680. background-color: var(--green-50);
  681. color: var(--white);
  682. font-size: var(--font-size-03);
  683. }
  684. .plans-new-table-highlighted-cell {
  685. border-right: var(--border-width-base) solid var(--green-50);
  686. border-left: var(--border-width-base) solid var(--green-50);
  687. }
  688. .ai-assist {
  689. color: var(--neutral-90);
  690. @include media-breakpoint-up(lg) {
  691. padding-left: 0 !important;
  692. padding-right: 0 !important;
  693. }
  694. .ai-assist-heading {
  695. margin-top: var(--spacing-12);
  696. margin-bottom: var(--spacing-12);
  697. text-align: center;
  698. }
  699. .ai-assist-container {
  700. padding: var(--spacing-10);
  701. border: var(--spacing-02) solid var(--neutral-10);
  702. border-radius: var(--border-radius-large);
  703. background:
  704. linear-gradient(270deg, var(--blue-10), #fff) 0.13%,
  705. #fff 63.21%;
  706. @include media-breakpoint-down(lg) {
  707. background: var(--bg-light-primary);
  708. border-width: 2px;
  709. border-radius: var(--border-radius-medium);
  710. border-color: var(--premium-gradient);
  711. padding: var(--spacing-09);
  712. }
  713. .ai-assist-content {
  714. display: flex;
  715. justify-content: space-between;
  716. gap: var(--spacing-07);
  717. @include media-breakpoint-down(lg) {
  718. flex-direction: column;
  719. }
  720. .ai-assist-left {
  721. display: flex;
  722. gap: var(--spacing-07);
  723. flex-direction: column;
  724. max-width: 480px;
  725. @include media-breakpoint-down(lg) {
  726. max-width: 100%;
  727. }
  728. .ai-assist-price {
  729. font-weight: 600;
  730. font-size: var(--font-size-03);
  731. @include media-breakpoint-down(lg) {
  732. font-weight: normal;
  733. font-size: var(--font-size-02);
  734. .price {
  735. font-size: var(--font-size-08);
  736. font-weight: 600;
  737. }
  738. }
  739. }
  740. .ai-assist-annually-price {
  741. display: block;
  742. }
  743. .ai-assist-monthly-price {
  744. display: none;
  745. }
  746. .ai-assist-header-switch {
  747. display: none;
  748. }
  749. .ai-assist-header {
  750. display: flex;
  751. align-items: center;
  752. justify-content: space-between;
  753. .ai-assist-header-content {
  754. display: flex;
  755. gap: var(--spacing-06);
  756. align-items: center;
  757. h3 {
  758. font-size: var(--font-size-07);
  759. margin: 0;
  760. padding: 0;
  761. @include media-breakpoint-down(lg) {
  762. font-size: var(--font-size-05);
  763. }
  764. }
  765. img {
  766. @include media-breakpoint-down(lg) {
  767. width: 24px;
  768. }
  769. }
  770. }
  771. .ai-assist-header-switch {
  772. align-items: center;
  773. gap: var(--spacing-03);
  774. user-select: none;
  775. input {
  776. margin: 0;
  777. }
  778. label {
  779. margin: 0;
  780. font-weight: normal;
  781. font-size: var(--font-size-03);
  782. }
  783. }
  784. }
  785. }
  786. .ai-assist-right {
  787. display: flex;
  788. align-items: center;
  789. gap: var(--spacing-06);
  790. .ai-assist-features {
  791. list-style: none;
  792. display: flex;
  793. flex-direction: column;
  794. gap: var(--spacing-04);
  795. min-width: 210px;
  796. margin-bottom: 0;
  797. .feature-item {
  798. display: flex;
  799. align-items: center;
  800. font-size: var(--font-size-03);
  801. cursor: default;
  802. .feature-icon {
  803. margin-right: var(--spacing-05);
  804. color: var(--neutral-70);
  805. width: 16px;
  806. height: 16px;
  807. }
  808. .feature-text {
  809. color: var(--neutral-90);
  810. }
  811. }
  812. @include media-breakpoint-up(lg) {
  813. .feature-item-selected {
  814. .feature-text {
  815. color: var(--blue-50);
  816. font-weight: 600;
  817. }
  818. .feature-icon {
  819. content: url(../../../public/img/check-circle-blue-filled.svg);
  820. }
  821. }
  822. }
  823. }
  824. .ai-assist-images {
  825. display: flex;
  826. align-items: flex-start;
  827. width: 280px;
  828. justify-content: center;
  829. @include media-breakpoint-down(lg) {
  830. display: none;
  831. }
  832. }
  833. }
  834. }
  835. }
  836. .ai-assist-header-switch {
  837. display: flex !important;
  838. }
  839. .ai-assist-button-container {
  840. display: flex;
  841. gap: var(--spacing-05);
  842. &.mobile {
  843. display: none;
  844. margin-top: var(--spacing-06);
  845. flex-direction: column;
  846. }
  847. @include media-breakpoint-down(lg) {
  848. &.mobile {
  849. display: flex;
  850. }
  851. &.desktop {
  852. display: none;
  853. }
  854. }
  855. .btn.monthly {
  856. display: none;
  857. }
  858. }
  859. .overleaf-assist-screenshot {
  860. height: auto;
  861. max-width: 280px;
  862. max-height: 200px;
  863. border-radius: var(--border-radius-base-new);
  864. display: none;
  865. &.selected {
  866. display: block;
  867. animation: fade-in 1s;
  868. }
  869. }
  870. }
  871. .ai-assist.monthly-period {
  872. .ai-assist-annually-price {
  873. display: none !important;
  874. }
  875. .ai-assist-monthly-price {
  876. display: block !important;
  877. }
  878. .ai-assist-button-container .btn.annual {
  879. display: none !important;
  880. }
  881. .ai-assist-button-container .btn.monthly {
  882. display: block !important;
  883. }
  884. }
  885. .plans-new-organizations {
  886. padding: var(--spacing-13) var(--spacing-08);
  887. .plans-new-organizations-text {
  888. text-align: center;
  889. font-size: var(--font-size-05);
  890. line-height: var(--line-height-04);
  891. margin-bottom: var(--spacing-00);
  892. }
  893. .plans-new-organizations-logo {
  894. margin-top: var(--spacing-09);
  895. display: flex;
  896. justify-content: space-around;
  897. align-items: center;
  898. @include media-breakpoint-down(xl) {
  899. flex-wrap: wrap;
  900. gap: 30px;
  901. }
  902. }
  903. }
  904. .plans-card-container-mobile {
  905. width: 100%;
  906. display: flex;
  907. flex-direction: column;
  908. gap: var(--spacing-06);
  909. .mt-spacing-06 {
  910. margin-top: var(--spacing-06);
  911. }
  912. .highlighted-plans-card {
  913. border: 2px solid var(--green-50) !important;
  914. }
  915. .plans-card-mobile {
  916. padding: var(--spacing-09);
  917. border: 2px solid var(--border-divider);
  918. width: 100%; // might need max-width
  919. border-radius: 8px;
  920. display: flex;
  921. flex-direction: column;
  922. .plans-card-title-mobile {
  923. color: var(--content-primary);
  924. font-size: var(--font-size-05); // 20px
  925. font-weight: 600;
  926. line-height: var(--line-height-04);
  927. }
  928. .plans-card-icon-container-mobile {
  929. margin-top: var(--spacing-04);
  930. .plans-card-icon {
  931. font-size: var(--font-size-09);
  932. color: var(--content-primary);
  933. }
  934. }
  935. s {
  936. padding: var(--spacing-04) 0 0 0;
  937. color: var(--neutral-60);
  938. font-size: var(--font-size-04); // 18px
  939. font-weight: 600;
  940. line-height: var(--line-height-05);
  941. margin-bottom: var(--spacing-04);
  942. }
  943. .plans-card-price-container-mobile {
  944. display: flex;
  945. align-items: baseline;
  946. }
  947. .group-plans-card-price-container-mobile {
  948. display: flex;
  949. align-items: center;
  950. }
  951. .plans-card-price-mobile {
  952. color: var(--content-primary);
  953. font-size: var(--font-size-08); // 36px
  954. font-weight: 600;
  955. line-height: var(--line-height-07);
  956. margin-right: var(--spacing-03);
  957. }
  958. .light-gray-text {
  959. color: var(--content-secondary);
  960. font-size: var(--font-size-02); // 14px
  961. line-height: var(--line-height-02);
  962. }
  963. .plans-card-description-mobile {
  964. .green-round-background {
  965. width: 20px;
  966. height: 20px;
  967. }
  968. .plans-card-description-list-mobile {
  969. list-style-type: none;
  970. padding-left: 0;
  971. margin-bottom: unset;
  972. li {
  973. display: flex;
  974. margin-top: var(--spacing-05);
  975. }
  976. }
  977. .plans-card-cta-container {
  978. margin-top: var(--spacing-08);
  979. width: 100%;
  980. .plans-cta + .plans-cta {
  981. margin-top: var(--spacing-04);
  982. }
  983. }
  984. }
  985. }
  986. }
  987. .plans-new-group-tab-card-container {
  988. margin-top: var(--spacing-09);
  989. }
  990. .plans-features-table-section-container-mobile {
  991. margin-top: var(--spacing-13);
  992. .plans-features-section-heading-mobile {
  993. font-size: var(--font-size-06);
  994. font-weight: 600;
  995. line-height: var(--line-height-05);
  996. color: var(--content-primary);
  997. text-align: center;
  998. margin-bottom: var(--spacing-08);
  999. }
  1000. .plans-features-table-mobile {
  1001. width: 100%;
  1002. .plans-features-table-sticky-header {
  1003. position: sticky;
  1004. top: 0;
  1005. }
  1006. .plans-features-table-header {
  1007. margin-bottom: var(--space-08);
  1008. }
  1009. .plans-features-table-header-container-mobile {
  1010. margin: var(--spacing-08) auto;
  1011. border-bottom: unset;
  1012. width: 100%;
  1013. max-width: 544px;
  1014. .plans-features-table-header-item-mobile {
  1015. width: 33%;
  1016. min-width: 114px;
  1017. padding: unset;
  1018. .plans-features-table-header-item-content-mobile {
  1019. padding: var(--spacing-04);
  1020. text-align: center;
  1021. background-color: var(--bg-light-secondary);
  1022. }
  1023. .plans-group-features-table-header-item-content-mobile {
  1024. padding: var(--spacing-04);
  1025. text-align: center;
  1026. background-color: var(--bg-light-secondary);
  1027. height: 64px;
  1028. display: flex;
  1029. justify-content: center;
  1030. align-items: center;
  1031. }
  1032. .plans-features-table-header-item-title-mobile {
  1033. color: var(--content-primary);
  1034. line-height: var(--line-height-03);
  1035. font-weight: 600;
  1036. font-size: var(--font-size-03);
  1037. }
  1038. .plans-features-table-header-item-price-mobile {
  1039. font-weight: 400;
  1040. color: var(--content-secondary);
  1041. line-height: var(--line-height-01);
  1042. font-size: var(--spacing-05);
  1043. }
  1044. }
  1045. .highlighted-styles {
  1046. background-color: var(--neutral-80);
  1047. .plans-features-table-header-item-title-mobile,
  1048. .plans-features-table-header-item-price-mobile {
  1049. color: var(--white);
  1050. }
  1051. }
  1052. .plans-features-table-header-item-content-mobile.highlighted,
  1053. .plans-group-features-table-header-item-content-mobile.highlighted {
  1054. background-color: var(--neutral-80);
  1055. .plans-features-table-header-item-title-mobile,
  1056. .plans-features-table-header-item-price-mobile {
  1057. color: var(--white);
  1058. }
  1059. }
  1060. }
  1061. tr.plans-features-table-row-for-margin {
  1062. height: var(--spacing-08);
  1063. }
  1064. .plans-features-table-body-container-mobile {
  1065. .plans-features-table-row-heading-mobile {
  1066. font-weight: 600;
  1067. text-align: center;
  1068. line-height: var(--line-height-03);
  1069. .plans-features-table-row-section-heading-content-mobile {
  1070. padding-top: var(--spacing-08);
  1071. padding-bottom: var(--spacing-05);
  1072. font-size: var(--font-size-04);
  1073. color: var(--content-primary);
  1074. }
  1075. }
  1076. // .plans-features-table-row-title-mobile and .plans-features-table-row-mobile are combined together to make one row visually, so we are using factors of 4 to alternatively color their backgrounds.
  1077. .plans-features-table-row-title-mobile {
  1078. &.plans-features-table-row-title-mobile-without-heading {
  1079. &:nth-child(4n - 3) {
  1080. background-color: var(--bg-light-secondary);
  1081. }
  1082. &:nth-child(4n - 1) {
  1083. background-color: var(--white);
  1084. }
  1085. }
  1086. &:nth-child(4n - 2) {
  1087. background-color: var(--bg-light-secondary);
  1088. }
  1089. &:nth-child(4n) {
  1090. background-color: var(--white);
  1091. }
  1092. .plans-features-table-row-title-content-mobile {
  1093. display: flex;
  1094. justify-content: center;
  1095. align-items: center;
  1096. padding-top: var(--spacing-06);
  1097. font-weight: 600;
  1098. line-height: var(--line-height-03);
  1099. .plans-features-table-row-title-accordion {
  1100. display: flex;
  1101. justify-content: center;
  1102. flex-direction: column;
  1103. align-items: center;
  1104. text-align: center;
  1105. padding: 0 var(--spacing-04);
  1106. .plans-features-table-row-title-accordion-header {
  1107. font-size: var(--font-size-03);
  1108. font-weight: 600;
  1109. line-height: var(--line-height-03);
  1110. display: flex;
  1111. justify-content: center;
  1112. background-color: unset;
  1113. border: unset;
  1114. .plans-features-table-row-title-accordion-icon {
  1115. display: flex;
  1116. align-items: center;
  1117. transition: transform 0.35s ease;
  1118. margin-left: var(--spacing-02);
  1119. }
  1120. &:not(.collapsed) {
  1121. .plans-features-table-row-title-accordion-icon {
  1122. transform: rotate(180deg);
  1123. transition: transform 0.35s ease;
  1124. }
  1125. }
  1126. }
  1127. .plans-features-table-row-title-accordion-body {
  1128. font-size: var(--font-size-01);
  1129. line-height: var(--line-height-01);
  1130. font-weight: 400;
  1131. }
  1132. }
  1133. }
  1134. }
  1135. .plans-features-table-row-mobile {
  1136. &.plans-features-table-row-mobile-without-heading {
  1137. &:nth-child(4n - 2) {
  1138. background-color: var(--bg-light-secondary);
  1139. }
  1140. &:nth-child(4n) {
  1141. background-color: var(--white);
  1142. }
  1143. }
  1144. &:nth-child(4n - 3) {
  1145. background-color: var(--white);
  1146. }
  1147. &:nth-child(4n - 1) {
  1148. background-color: var(--bg-light-secondary);
  1149. }
  1150. .plans-features-table-cell-content-mobile {
  1151. text-align: center;
  1152. padding-top: var(--spacing-05);
  1153. padding-bottom: var(--spacing-06);
  1154. }
  1155. }
  1156. }
  1157. }
  1158. }
  1159. .plans-price-disclaimer {
  1160. font-size: var(--font-size-01);
  1161. line-height: var(--line-height-01);
  1162. margin-top: var(--spacing-08);
  1163. text-align: center;
  1164. &:last-child {
  1165. margin-bottom: var(--spacing-11);
  1166. }
  1167. &:not(:last-child) {
  1168. margin-bottom: var(--spacing-08);
  1169. }
  1170. .plans-price-disclaimer-icons {
  1171. display: flex;
  1172. justify-content: center;
  1173. gap: var(--spacing-04);
  1174. }
  1175. }
  1176. .only-show-for-specific-plan-type {
  1177. display: none;
  1178. }
  1179. &[data-ol-current-plan-type='group'] {
  1180. .show-for-plan-type-group {
  1181. display: block;
  1182. }
  1183. }
  1184. &[data-ol-current-plan-type='individual'] {
  1185. .show-for-plan-type-individual {
  1186. display: block;
  1187. }
  1188. }
  1189. &[data-ol-current-plan-type='student'] {
  1190. .show-for-plan-type-student {
  1191. display: block;
  1192. }
  1193. }
  1194. .only-show-for-specific-plan-period {
  1195. display: none;
  1196. }
  1197. &[data-ol-current-plan-period='annual'] {
  1198. .show-for-plan-period-annual {
  1199. display: block;
  1200. }
  1201. }
  1202. &[data-ol-current-plan-period='monthly'] {
  1203. .show-for-plan-period-monthly {
  1204. display: block;
  1205. }
  1206. }
  1207. }
  1208. .plans-overleaf-common-request {
  1209. color: var(--content-primary);
  1210. display: flex;
  1211. align-items: center;
  1212. justify-content: center;
  1213. margin: var(--spacing-04) var(--spacing-08);
  1214. text-align: center;
  1215. gap: var(--spacing-06);
  1216. @include media-breakpoint-down(md) {
  1217. flex-direction: column;
  1218. margin: 0;
  1219. }
  1220. a {
  1221. font-size: var(--font-size-02);
  1222. line-height: var(--line-height-02);
  1223. }
  1224. }
  1225. .plans-faq {
  1226. .faq-heading-container {
  1227. text-align: center;
  1228. margin-bottom: var(--spacing-10);
  1229. @include media-breakpoint-down(md) {
  1230. text-align: unset;
  1231. }
  1232. }
  1233. .plans-faq-support {
  1234. margin-top: var(--spacing-06);
  1235. margin-bottom: var(--spacing-06);
  1236. display: flex;
  1237. flex-direction: column;
  1238. align-items: center;
  1239. gap: var(--spacing-04);
  1240. span {
  1241. line-height: var(--line-height-03);
  1242. font-size: var(--font-size-04);
  1243. }
  1244. button {
  1245. font-family: 'DM Mono', monospace;
  1246. font-weight: 500;
  1247. text-decoration: none;
  1248. color: var(--green-50);
  1249. line-height: var(--line-height-03);
  1250. font-size: var(--font-size-04);
  1251. background-color: var(--white);
  1252. border: unset;
  1253. display: flex;
  1254. align-items: center;
  1255. }
  1256. }
  1257. }
  1258. .plans-new-design.plans-interstitial-new-design {
  1259. padding-top: $header-height;
  1260. padding-bottom: var(--spacing-09);
  1261. .plans-interstitial-new-content {
  1262. display: flex;
  1263. flex-direction: column;
  1264. align-items: center;
  1265. }
  1266. .plans-new-table {
  1267. th,
  1268. td {
  1269. width: $table-5-column-width;
  1270. }
  1271. }
  1272. }
  1273. .plans-cta {
  1274. display: block;
  1275. a {
  1276. display: block;
  1277. }
  1278. }
  1279. .plans-faq-tabs {
  1280. max-width: 800px;
  1281. margin: 0 auto;
  1282. .nav-tabs-container {
  1283. margin-bottom: var(--spacing-08);
  1284. }
  1285. .tab-content {
  1286. margin-top: 0;
  1287. }
  1288. }