plans.less 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272
  1. @z-index-plans-new-tabs: 1;
  2. @z-index-group-member-picker-list: 1;
  3. @z-index-plans-new-tabs-content: 0;
  4. @highlighted-heading-line-height: (@line-height-03 / 1rem) * 16px; // convert to px
  5. @highlighted-heading-padding-vertical: @spacing-02;
  6. @highlighted-heading-height: (
  7. @highlighted-heading-line-height + (2 * @highlighted-heading-padding-vertical)
  8. );
  9. @switcher-container-margin-bottom: @highlighted-heading-height + @spacing-10;
  10. @nondiscounted-price-element-height: var(--line-height-02);
  11. @group-member-picker-height: 24px;
  12. @group-member-picker-top-height: 36px;
  13. @group-member-picker-sm-width: 50%;
  14. @group-member-picker-md-width: 25%;
  15. @group-member-picker-min-width: 234px;
  16. @container-plans-responsive-width: 95%;
  17. @table-4-column-width: 25%;
  18. @table-5-column-width: 20%;
  19. @plans-m-a-new-switch-height: 20px;
  20. @plans-m-a-switch-padding: 2px;
  21. .plans-new-design {
  22. padding-top: var(--header-height);
  23. .container {
  24. padding: 0 var(--spacing-06);
  25. @media (min-width: @screen-sm-min) {
  26. width: @container-plans-responsive-width;
  27. }
  28. @media (min-width: @screen-xl-min) {
  29. width: @container-xl;
  30. }
  31. .geo-banner-container {
  32. margin-top: var(--spacing-08);
  33. }
  34. .plans-new-design-content-spacing {
  35. margin-top: var(--spacing-16);
  36. }
  37. .interstitial-new-design-content-spacing {
  38. margin-top: var(--spacing-13);
  39. }
  40. }
  41. .main-heading-section {
  42. text-align: center;
  43. max-width: 885px;
  44. margin-left: auto;
  45. margin-right: auto;
  46. @media (max-width: @screen-xs-max) {
  47. text-align: left;
  48. padding: 0 16px;
  49. }
  50. .plans-page-heading {
  51. margin-top: 8px;
  52. margin-bottom: unset;
  53. font-size: 3rem;
  54. font-weight: 600;
  55. line-height: 64px;
  56. @media (max-width: @screen-xs-max) {
  57. font-size: 2.25rem;
  58. line-height: 48px;
  59. padding-right: 5rem;
  60. }
  61. }
  62. .plans-page-sub-heading {
  63. font-size: 1.125rem;
  64. line-height: 24px;
  65. margin-top: 16px;
  66. margin-bottom: unset;
  67. }
  68. }
  69. .plans-new-content {
  70. display: flex;
  71. flex-direction: column;
  72. align-items: center;
  73. @media (min-width: @screen-sm-min) {
  74. border-left: 1px solid var(--neutral-20);
  75. border-right: 1px solid var(--neutral-20);
  76. border-bottom: 1px solid var(--neutral-20);
  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(--neutral-20);
  91. @media (min-width: @screen-sm-min) {
  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(--neutral-20);
  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. .plans-new-tab-link {
  117. border: unset;
  118. display: flex;
  119. align-items: center;
  120. color: var(--neutral-70);
  121. margin: 0;
  122. border-top-right-radius: 8px;
  123. border-top-left-radius: 8px;
  124. border: 1px solid var(--neutral-20);
  125. padding: var(--spacing-05) var(--spacing-08);
  126. gap: var(--spacing-04);
  127. &:focus {
  128. background-color: unset;
  129. outline: 0;
  130. }
  131. &:hover {
  132. background-color: var(--neutral-20);
  133. }
  134. // tab navigation focus style
  135. &:focus-visible {
  136. .box-shadow-button-input();
  137. outline: 0;
  138. }
  139. @media (max-width: @screen-xs-max) {
  140. font-size: var(--font-size-02);
  141. line-height: var(--line-height-02);
  142. padding: var(--spacing-05);
  143. gap: var(--spacing-02);
  144. }
  145. }
  146. &.active {
  147. .plans-new-tab-link {
  148. border: 1px solid white;
  149. position: relative;
  150. color: var(--green-50);
  151. // remove the border on tab focus
  152. &:focus-visible {
  153. &::before {
  154. content: unset;
  155. }
  156. }
  157. &::before {
  158. content: '';
  159. position: absolute;
  160. background: border-box
  161. linear-gradient(
  162. to bottom,
  163. @green-50 0%,
  164. @neutral-20 85%,
  165. @neutral-20 100%
  166. );
  167. -webkit-mask:
  168. linear-gradient(white 0 0) padding-box,
  169. linear-gradient(white 0 0);
  170. mask:
  171. linear-gradient(white 0 0) padding-box,
  172. linear-gradient(white 0 0);
  173. -webkit-mask-composite: xor;
  174. mask-composite: exclude;
  175. border-top-right-radius: 8px;
  176. border-top-left-radius: 8px;
  177. border: 1px solid transparent;
  178. border-bottom: 1px solid white;
  179. // make the border overlap with the .plans-new-tab-link border
  180. top: 0;
  181. bottom: -2px;
  182. left: -1px;
  183. right: -1px;
  184. }
  185. &:hover {
  186. background-color: unset;
  187. }
  188. }
  189. .plans-new-discount-badge {
  190. background-color: var(--green-10);
  191. color: var(--green-60);
  192. }
  193. }
  194. }
  195. }
  196. .plans-new-period-switcher-container {
  197. position: relative;
  198. display: inline-flex;
  199. background-color: var(--neutral-10);
  200. border-radius: var(--border-radius-full-new);
  201. padding: var(--spacing-03);
  202. margin-top: var(--spacing-09);
  203. margin-bottom: @switcher-container-margin-bottom;
  204. gap: var(--spacing-04);
  205. @media (max-width: @screen-xs-max) {
  206. margin-bottom: var(--spacing-09);
  207. }
  208. label {
  209. display: inline-flex;
  210. align-items: center;
  211. margin: 0;
  212. font-size: var(--font-size-05);
  213. font-weight: 600;
  214. line-height: var(--line-height-04);
  215. text-align: center;
  216. padding: var(--spacing-01) var(--spacing-04);
  217. border-radius: var(--border-radius-full-new);
  218. &:hover {
  219. background-color: var(--neutral-20);
  220. cursor: pointer;
  221. }
  222. }
  223. input[type='radio'] {
  224. position: absolute;
  225. left: -9999px;
  226. &:focus,
  227. &:focus-visible {
  228. outline: 0;
  229. }
  230. }
  231. input[type='radio']:focus-visible + label,
  232. input[type='radio']:checked:focus-visible + label {
  233. .box-shadow-button-input();
  234. }
  235. input[type='radio']:checked + label {
  236. background-color: var(--green-50);
  237. color: white;
  238. box-shadow: 0px 2px 4px 0px rgba(30, 37, 48, 0.16);
  239. .plans-new-discount-badge {
  240. background-color: var(--green-10);
  241. color: var(--green-60);
  242. }
  243. }
  244. .plans-new-discount-badge {
  245. margin-left: var(--spacing-03);
  246. }
  247. }
  248. .plans-new-discount-badge {
  249. font-size: var(--font-size-01);
  250. font-family: 'DM Mono', monospace;
  251. padding: 2px 8px;
  252. height: 20px;
  253. border-radius: 10px;
  254. background-color: var(--neutral-70);
  255. color: white;
  256. display: flex;
  257. align-items: center;
  258. font-weight: 500;
  259. line-height: var(--line-height-01);
  260. }
  261. .plans-new-tab-content {
  262. width: 100%;
  263. border: none;
  264. padding-top: 0;
  265. @media (max-width: @screen-xs-min) {
  266. padding: 0;
  267. }
  268. }
  269. .plans-new-mobile {
  270. display: none;
  271. @media (max-width: @screen-xs-max) {
  272. display: block;
  273. }
  274. }
  275. .plans-new-desktop {
  276. display: block;
  277. @media (max-width: @screen-xs-max) {
  278. display: none;
  279. }
  280. }
  281. .plans-new-table {
  282. width: 100%;
  283. // keep the borders separate to help with spacing and alignment in the CTAs
  284. border-collapse: separate;
  285. border-spacing: 0;
  286. th,
  287. td {
  288. width: @table-4-column-width;
  289. }
  290. }
  291. .plans-new-table-student {
  292. margin-left: @table-4-column-width / 2;
  293. }
  294. .plans-new-table-student-verification {
  295. font-weight: 600;
  296. font-size: var(--font-size-01);
  297. text-align: center;
  298. }
  299. .plans-new-table-group {
  300. margin-top: @spacing-11 + @highlighted-heading-height;
  301. }
  302. thead th {
  303. position: relative;
  304. padding: var(--spacing-06) var(--spacing-08) var(--spacing-04)
  305. var(--spacing-08);
  306. font-size: var(--font-size-05);
  307. font-weight: 600;
  308. line-height: var(--line-height-04);
  309. color: var(--neutral-90);
  310. text-align: center;
  311. @media (max-width: @screen-md-max) {
  312. padding: var(--spacing-05) var(--spacing-05) 0 var(--spacing-05);
  313. }
  314. }
  315. .plans-new-table-subheader {
  316. vertical-align: top;
  317. padding: 0 var(--spacing-08);
  318. @media (max-width: @screen-md-max) {
  319. padding: 0 var(--spacing-05);
  320. }
  321. &.plans-new-table-icon-cta-cell,
  322. &.plans-subheader-monthly-cta-swapped {
  323. vertical-align: bottom;
  324. }
  325. }
  326. .plans-new-table-cta-row {
  327. td {
  328. padding-bottom: var(--spacing-06);
  329. @media (max-width: @screen-md-max) {
  330. padding-bottom: var(--spacing-05);
  331. }
  332. // use transparent borders to use the same spacing as highlighted cells
  333. &:not(.plans-new-table-highlighted-cell) {
  334. border-right: var(--border-width-base) solid transparent;
  335. border-left: var(--border-width-base) solid transparent;
  336. }
  337. }
  338. .btn-block + .btn-block {
  339. margin-top: var(--spacing-04);
  340. }
  341. }
  342. .plans-new-table-header-grid-container {
  343. display: flex;
  344. flex-direction: column;
  345. align-items: center;
  346. s,
  347. .match-original-price-height {
  348. font-size: var(--font-size-02);
  349. line-height: @nondiscounted-price-element-height;
  350. color: var(--neutral-60);
  351. font-weight: 600;
  352. }
  353. .plans-new-table-header-price {
  354. font-size: var(--font-size-08);
  355. font-weight: 600;
  356. line-height: var(--line-height-07);
  357. color: var(--neutral-90);
  358. }
  359. .plans-new-table-header-price-unit {
  360. font-size: var(--font-size-02);
  361. line-height: var(--line-height-02);
  362. text-align: center;
  363. }
  364. .plans-new-table-cta {
  365. margin-top: auto;
  366. a:nth-child(2) {
  367. margin-top: var(--spacing-04);
  368. }
  369. }
  370. .plans-new-table-header-icon {
  371. font-size: 56px;
  372. color: var(--neutral-90);
  373. }
  374. }
  375. .plans-new-table-header-price-unit-total {
  376. font-size: var(--font-size-01);
  377. line-height: var(--line-height-01);
  378. }
  379. .plans-new-table-header-desc {
  380. margin-top: var(--spacing-05);
  381. margin-bottom: var(--spacing-08);
  382. font-size: var(--font-size-02);
  383. line-height: var(--line-height-02);
  384. }
  385. .plans-new-root-group-member-picker {
  386. margin: var(--spacing-10) auto 0 auto;
  387. @media (min-width: @screen-sm-min) {
  388. width: @group-member-picker-sm-width;
  389. }
  390. @media (min-width: @screen-md-min) {
  391. width: @group-member-picker-md-width;
  392. min-width: @group-member-picker-min-width; // ensure checkbox title doesn't wrap in English
  393. }
  394. }
  395. .plans-new-group-member-picker {
  396. .plans-new-group-member-picker-text {
  397. font-size: var(--font-size-02);
  398. line-height: var(--line-height-02);
  399. font-weight: 600;
  400. margin-bottom: var(--spacing-02);
  401. }
  402. .plans-new-group-member-picker-form {
  403. position: relative;
  404. .plans-new-group-member-picker-button {
  405. width: 100%;
  406. background-color: white;
  407. border-radius: var(--border-radius-base-new);
  408. border: 1px solid var(--neutral-60);
  409. display: flex;
  410. align-items: center;
  411. justify-content: space-between;
  412. padding: var(--spacing-01) var(--spacing-03);
  413. margin-bottom: var(--spacing-04);
  414. height: @group-member-picker-height;
  415. font-size: var(--font-size-02);
  416. line-height: var(--line-height-02);
  417. &[aria-expanded='true'] {
  418. i {
  419. transform: rotate(180deg);
  420. transition: transform 0.35s ease;
  421. }
  422. }
  423. &[aria-expanded='false'] {
  424. i {
  425. transition: transform 0.35s ease;
  426. }
  427. }
  428. &[data-ol-plans-new-group-member-picker-button='group-all'] {
  429. height: @group-member-picker-top-height;
  430. }
  431. }
  432. ul.plans-new-group-member-picker-list {
  433. list-style-type: none;
  434. margin-bottom: 0;
  435. overflow: auto; // to enable box-shadow
  436. box-shadow: 0px 2px 4px 0px rgba(30, 37, 48, 0.16);
  437. padding: var(--spacing-02);
  438. position: absolute;
  439. top: @group-member-picker-height;
  440. background-color: white;
  441. width: 100%;
  442. margin-top: var(--spacing-01);
  443. z-index: @z-index-group-member-picker-list;
  444. &[data-ol-plans-new-group-member-picker-dropdown='group-all'] {
  445. top: @group-member-picker-top-height;
  446. }
  447. }
  448. li.plans-new-group-member-picker-footer {
  449. font-size: var(--font-size-02);
  450. line-height: var(--line-height-02);
  451. padding: var(--spacing-05) var(--spacing-04);
  452. span {
  453. display: block;
  454. }
  455. button {
  456. font-weight: 400;
  457. padding: 0;
  458. font-size: var(--font-size-02);
  459. line-height: var(--line-height-02);
  460. }
  461. }
  462. li {
  463. position: relative;
  464. &:not(:last-child) {
  465. margin-bottom: var(--spacing-02);
  466. }
  467. &:not(.plans-new-group-member-picker-footer):hover {
  468. input[type='radio']:not(:checked) + p {
  469. background-color: var(--neutral-10);
  470. }
  471. }
  472. input[type='radio'] {
  473. position: absolute;
  474. opacity: 0;
  475. cursor: pointer;
  476. &:focus + p {
  477. &:extend(.input-focus-style);
  478. }
  479. + p {
  480. padding: var(--spacing-05) var(--spacing-08) var(--spacing-05)
  481. var(--spacing-04);
  482. margin-bottom: 0;
  483. border-radius: var(--border-radius-base-new);
  484. }
  485. }
  486. input[type='radio']:checked + p {
  487. background-color: var(--green-10);
  488. color: var(--green-70);
  489. position: relative;
  490. word-wrap: break-word;
  491. &::after {
  492. content: url(../../../public/img/material-icons/check-green-20.svg);
  493. position: absolute;
  494. right: 12px;
  495. top: 50%;
  496. transform: translateY(-50%);
  497. @media (max-width: @screen-sm-max) {
  498. right: var(--spacing-04);
  499. }
  500. }
  501. }
  502. label {
  503. width: 100%;
  504. font-size: var(--font-size-02);
  505. line-height: var(--line-height-02);
  506. margin-bottom: var(--spacing-00);
  507. font-weight: 400;
  508. cursor: pointer;
  509. border-radius: var(--border-radius-base-new);
  510. .list-item-footer {
  511. font-size: var(--font-size-01);
  512. line-height: var(--line-height-01);
  513. }
  514. }
  515. }
  516. .plans-new-edu-discount {
  517. display: flex;
  518. align-items: flex-start;
  519. gap: var(--spacing-04);
  520. margin-bottom: var(--spacing-06);
  521. font-weight: 400;
  522. input[type='checkbox'] {
  523. margin: var(--spacing-02);
  524. accent-color: var(--green-50);
  525. &:focus-visible {
  526. .box-shadow-button-input();
  527. }
  528. }
  529. .plans-new-edu-discount-content {
  530. display: flex;
  531. flex-direction: column;
  532. span {
  533. line-height: var(--line-height-03);
  534. color: var(--neutral-90);
  535. }
  536. small {
  537. color: var(--neutral-70);
  538. font-size: var(--font-size-01);
  539. line-height: var(--line-height-01);
  540. }
  541. }
  542. }
  543. }
  544. }
  545. .plans-new-table-body:last-of-type {
  546. .plans-new-table-feature-row:last-of-type {
  547. .plans-new-table-feature-td.plans-new-table-highlighted-cell {
  548. border-bottom: var(--border-width-base) solid var(--green-50);
  549. }
  550. }
  551. }
  552. .plans-new-table-heading-row {
  553. // this means min-height, min-height does not work in table layout
  554. // https://stackoverflow.com/questions/7790222
  555. height: 64px;
  556. }
  557. .plans-new-table-heading-text {
  558. padding: var(--spacing-05) var(--spacing-08) var(--spacing-05)
  559. var(--spacing-05);
  560. font-weight: 600;
  561. font-size: var(--font-size-04);
  562. line-height: var(--line-height-03);
  563. vertical-align: bottom;
  564. }
  565. .plans-new-table-feature-row {
  566. &:nth-child(even) {
  567. background-color: var(--neutral-10);
  568. }
  569. }
  570. .plans-new-table-section-without-header-row {
  571. &:nth-child(odd):not(.plans-new-table-heading-row) {
  572. background-color: var(--neutral-10);
  573. }
  574. &:nth-child(even):not(.plans-new-table-heading-row) {
  575. background-color: var(--white);
  576. }
  577. }
  578. .plans-new-table-feature-th {
  579. font-weight: normal;
  580. padding: var(--spacing-05) var(--spacing-08) var(--spacing-05)
  581. var(--spacing-05);
  582. .plans-new-table-feature-th-content {
  583. line-height: var(--line-height-03);
  584. display: flex;
  585. justify-content: space-between;
  586. align-items: center;
  587. .plans-new-table-feature-tooltip-icon {
  588. cursor: help;
  589. margin-left: var(--spacing-05);
  590. }
  591. .tooltip.in {
  592. opacity: 1;
  593. }
  594. .tooltip-inner {
  595. padding: var(--spacing-04) var(--spacing-06);
  596. max-width: 258px;
  597. width: 258px;
  598. font-family: Lato, sans-serif;
  599. font-size: var(--font-size-02);
  600. text-align: left;
  601. background-color: var(--neutral-90);
  602. border-radius: var(--border-radius-base-new);
  603. }
  604. }
  605. }
  606. .plans-new-table-feature-td {
  607. padding: var(--spacing-05) var(--spacing-08);
  608. text-align: center;
  609. line-height: var(--line-height-03);
  610. .green-round-background {
  611. margin-right: 0;
  612. }
  613. }
  614. .plans-new-table-highlighted-heading {
  615. position: absolute;
  616. left: calc(-1 * var(--border-width-base));
  617. top: -1 * @highlighted-heading-height;
  618. height: @highlighted-heading-height;
  619. width: calc(100% + (2 * var(--border-width-base)));
  620. border-top-left-radius: var(--border-radius-large-new);
  621. border-top-right-radius: var(--border-radius-large-new);
  622. padding: @highlighted-heading-padding-vertical var(--spacing-04);
  623. font-weight: 600;
  624. text-align: center;
  625. line-height: @highlighted-heading-line-height;
  626. background-color: var(--green-50);
  627. color: var(--white);
  628. font-size: var(--font-size-03);
  629. }
  630. .plans-new-table-highlighted-cell {
  631. border-right: var(--border-width-base) solid var(--green-50);
  632. border-left: var(--border-width-base) solid var(--green-50);
  633. }
  634. .plans-new-organizations {
  635. padding: var(--spacing-13) var(--spacing-08);
  636. .plans-new-organizations-text {
  637. text-align: center;
  638. font-size: var(--font-size-05);
  639. line-height: var(--line-height-04);
  640. margin-bottom: var(--spacing-00);
  641. }
  642. .plans-new-organizations-logo {
  643. margin-top: var(--spacing-09);
  644. display: flex;
  645. justify-content: space-around;
  646. align-items: center;
  647. @media (max-width: @screen-md-max) {
  648. flex-wrap: wrap;
  649. gap: 30px;
  650. }
  651. }
  652. }
  653. .plans-card-container-mobile {
  654. width: 100%;
  655. display: flex;
  656. flex-direction: column;
  657. gap: var(--spacing-06);
  658. .mt-spacing-06 {
  659. margin-top: var(--spacing-06);
  660. }
  661. .highlighted-plans-card {
  662. border: 2px solid var(--green-50) !important;
  663. }
  664. .plans-card-mobile {
  665. padding: var(--spacing-09);
  666. border: 2px solid var(--neutral-20);
  667. width: 100%; // might need max-width
  668. border-radius: 8px;
  669. display: flex;
  670. flex-direction: column;
  671. .plans-card-title-mobile {
  672. color: var(--neutral-90);
  673. font-size: var(--font-size-05); // 20px
  674. font-weight: 600;
  675. line-height: var(--line-height-04);
  676. }
  677. .plans-card-icon-container-mobile {
  678. margin-top: var(--spacing-04);
  679. .plans-card-icon {
  680. font-size: var(--font-size-09);
  681. color: var(--neutral-90);
  682. }
  683. }
  684. s {
  685. padding: var(--spacing-04) 0 0 0;
  686. color: var(--neutral-60);
  687. font-size: var(--font-size-04); // 18px
  688. font-weight: 600;
  689. line-height: var(--line-height-05);
  690. margin-bottom: var(--spacing-04);
  691. }
  692. .plans-card-price-container-mobile {
  693. display: flex;
  694. align-items: baseline;
  695. .light-gray-text:has(.billed-annually-disclaimer) {
  696. align-self: center;
  697. }
  698. }
  699. .group-plans-card-price-container-mobile {
  700. display: flex;
  701. align-items: center;
  702. }
  703. .plans-card-price-mobile {
  704. color: var(--neutral-90);
  705. font-size: var(--font-size-08); // 36px
  706. font-weight: 600;
  707. line-height: var(--line-height-07);
  708. margin-right: var(--spacing-03);
  709. }
  710. .light-gray-text {
  711. color: var(--neutral-70);
  712. font-size: var(--font-size-02); // 14px
  713. line-height: var(--line-height-02);
  714. }
  715. .plans-card-description-mobile {
  716. .green-round-background {
  717. width: 20px;
  718. height: 20px;
  719. }
  720. .plans-card-description-list-mobile {
  721. list-style-type: none;
  722. padding-left: 0;
  723. margin-bottom: unset;
  724. li {
  725. display: flex;
  726. margin-top: var(--spacing-05);
  727. }
  728. }
  729. .plans-card-cta-container {
  730. margin-top: var(--spacing-08);
  731. width: 100%;
  732. .btn-block + .btn-block {
  733. margin-top: var(--spacing-04);
  734. }
  735. }
  736. }
  737. }
  738. }
  739. .plans-new-group-tab-card-container {
  740. margin-top: var(--spacing-09);
  741. }
  742. .plans-features-table-section-container-mobile {
  743. margin-top: var(--spacing-13);
  744. .plans-features-section-heading-mobile {
  745. font-size: var(--font-size-06);
  746. font-weight: 600;
  747. line-height: var(--line-height-05);
  748. color: var(--neutral-90);
  749. text-align: center;
  750. margin-bottom: var(--spacing-08);
  751. }
  752. .plans-features-table-mobile {
  753. width: 100%;
  754. .plans-features-table-sticky-header {
  755. position: sticky;
  756. top: 0;
  757. }
  758. .plans-features-table-header {
  759. margin-bottom: var(--space-08);
  760. }
  761. .plans-features-table-header-container-mobile {
  762. margin: var(--spacing-08) auto;
  763. border-bottom: unset;
  764. width: 100%;
  765. max-width: 544px;
  766. .plans-features-table-header-item-mobile {
  767. width: 33%;
  768. min-width: 114px;
  769. padding: unset;
  770. .plans-features-table-header-item-content-mobile {
  771. padding: var(--spacing-04);
  772. text-align: center;
  773. background-color: var(--neutral-10);
  774. }
  775. .plans-group-features-table-header-item-content-mobile {
  776. padding: var(--spacing-04);
  777. text-align: center;
  778. background-color: var(--neutral-10);
  779. height: 64px;
  780. display: flex;
  781. justify-content: center;
  782. align-items: center;
  783. }
  784. .plans-features-table-header-item-title-mobile {
  785. color: var(--neutral-90);
  786. line-height: var(--line-height-03);
  787. font-weight: 600;
  788. font-size: var(--font-size-03);
  789. }
  790. .plans-features-table-header-item-price-mobile {
  791. font-weight: 400;
  792. color: var(--neutral-70);
  793. line-height: var(--line-height-01);
  794. font-size: var(--spacing-05);
  795. }
  796. }
  797. .highlighted-styles {
  798. background-color: var(--neutral-80);
  799. .plans-features-table-header-item-title-mobile,
  800. .plans-features-table-header-item-price-mobile {
  801. color: var(--white);
  802. }
  803. }
  804. .plans-features-table-header-item-content-mobile.highlighted,
  805. .plans-group-features-table-header-item-content-mobile.highlighted {
  806. .highlighted-styles;
  807. }
  808. }
  809. tr.plans-features-table-row-for-margin {
  810. height: var(--spacing-08);
  811. }
  812. .plans-features-table-body-container-mobile {
  813. .plans-features-table-row-heading-mobile {
  814. font-weight: 600;
  815. text-align: center;
  816. line-height: var(--line-height-03);
  817. .plans-features-table-row-section-heading-content-mobile {
  818. padding-top: var(--spacing-08);
  819. padding-bottom: var(--spacing-05);
  820. font-size: var(--font-size-04);
  821. color: var(--neutral-90);
  822. }
  823. }
  824. // .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.
  825. .plans-features-table-row-title-mobile {
  826. &.plans-features-table-row-title-mobile-without-heading {
  827. &:nth-child(4n - 3) {
  828. background-color: var(--neutral-10);
  829. }
  830. &:nth-child(4n - 1) {
  831. background-color: var(--white);
  832. }
  833. }
  834. &:nth-child(4n - 2) {
  835. background-color: var(--neutral-10);
  836. }
  837. &:nth-child(4n) {
  838. background-color: var(--white);
  839. }
  840. .plans-features-table-row-title-content-mobile {
  841. display: flex;
  842. justify-content: center;
  843. align-items: center;
  844. padding-top: var(--spacing-06);
  845. font-weight: 600;
  846. line-height: var(--line-height-03);
  847. .plans-features-table-row-title-accordion {
  848. display: flex;
  849. justify-content: center;
  850. flex-direction: column;
  851. align-items: center;
  852. text-align: center;
  853. padding: 0 var(--spacing-04);
  854. .plans-features-table-row-title-accordion-header {
  855. font-size: var(--font-size-03);
  856. font-weight: 600;
  857. line-height: var(--line-height-03);
  858. display: flex;
  859. justify-content: center;
  860. background-color: unset;
  861. border: unset;
  862. .plans-features-table-row-title-accordion-icon {
  863. display: flex;
  864. align-items: center;
  865. transition: transform 0.35s ease;
  866. margin-left: var(--spacing-02);
  867. }
  868. &:not(.collapsed) {
  869. .plans-features-table-row-title-accordion-icon {
  870. transform: rotate(180deg);
  871. transition: transform 0.35s ease;
  872. }
  873. }
  874. }
  875. .plans-features-table-row-title-accordion-body {
  876. font-size: var(--font-size-01);
  877. line-height: var(--line-height-01);
  878. font-weight: 400;
  879. }
  880. }
  881. }
  882. }
  883. .plans-features-table-row-mobile {
  884. &.plans-features-table-row-mobile-without-heading {
  885. &:nth-child(4n - 2) {
  886. background-color: var(--neutral-10);
  887. }
  888. &:nth-child(4n) {
  889. background-color: var(--white);
  890. }
  891. }
  892. &:nth-child(4n - 3) {
  893. background-color: var(--white);
  894. }
  895. &:nth-child(4n - 1) {
  896. background-color: var(--neutral-10);
  897. }
  898. .plans-features-table-cell-content-mobile {
  899. text-align: center;
  900. padding-top: var(--spacing-05);
  901. padding-bottom: var(--spacing-06);
  902. }
  903. }
  904. }
  905. }
  906. }
  907. .plans-price-disclaimer {
  908. font-size: var(--font-size-01);
  909. line-height: var(--line-height-01);
  910. margin-top: var(--spacing-08);
  911. text-align: center;
  912. &:last-child {
  913. margin-bottom: var(--spacing-11);
  914. }
  915. &:not(:last-child) {
  916. margin-bottom: var(--spacing-08);
  917. }
  918. .plans-price-disclaimer-icons {
  919. display: flex;
  920. justify-content: center;
  921. gap: var(--spacing-04);
  922. }
  923. }
  924. .only-show-for-specific-plan-type {
  925. display: none;
  926. }
  927. &[data-ol-current-plan-type='group'] {
  928. .show-for-plan-type-group {
  929. display: block;
  930. }
  931. }
  932. &[data-ol-current-plan-type='individual'] {
  933. .show-for-plan-type-individual {
  934. display: block;
  935. }
  936. }
  937. &[data-ol-current-plan-type='student'] {
  938. .show-for-plan-type-student {
  939. display: block;
  940. }
  941. }
  942. .only-show-for-specific-plan-period {
  943. display: none;
  944. }
  945. &[data-ol-current-plan-period='annual'] {
  946. .show-for-plan-period-annual {
  947. display: block;
  948. }
  949. }
  950. &[data-ol-current-plan-period='monthly'] {
  951. .show-for-plan-period-monthly {
  952. display: block;
  953. }
  954. }
  955. }
  956. .plans-overleaf-common-request {
  957. color: var(--neutral-90);
  958. display: flex;
  959. align-items: center;
  960. justify-content: center;
  961. margin: var(--spacing-04) var(--spacing-08);
  962. text-align: center;
  963. gap: var(--spacing-06);
  964. @media (max-width: @screen-xs-max) {
  965. flex-direction: column;
  966. margin: 0;
  967. }
  968. a {
  969. font-size: var(--font-size-02);
  970. line-height: var(--line-height-02);
  971. }
  972. }
  973. .plans-faq {
  974. .faq-heading-container {
  975. text-align: center;
  976. margin-bottom: var(--spacing-10);
  977. @media (max-width: @screen-xs-max) {
  978. text-align: unset;
  979. }
  980. }
  981. .plans-faq-support {
  982. margin-top: var(--spacing-06);
  983. display: flex;
  984. flex-direction: column;
  985. align-items: center;
  986. gap: var(--spacing-04);
  987. span {
  988. line-height: var(--line-height-03);
  989. font-size: var(--font-size-04);
  990. }
  991. button {
  992. font-family: 'DM Mono', monospace;
  993. font-weight: 500;
  994. text-decoration: none;
  995. color: var(--green-50);
  996. line-height: var(--line-height-03);
  997. font-size: var(--font-size-04);
  998. background-color: var(--white);
  999. border: unset;
  1000. display: flex;
  1001. align-items: center;
  1002. }
  1003. }
  1004. }
  1005. .plans-new-design.plans-interstitial-new-design {
  1006. padding-top: var(--header-height);
  1007. padding-bottom: var(--spacing-09);
  1008. .plans-interstitial-new-content {
  1009. display: flex;
  1010. flex-direction: column;
  1011. align-items: center;
  1012. }
  1013. .plans-new-table {
  1014. th,
  1015. td {
  1016. width: @table-5-column-width;
  1017. }
  1018. }
  1019. }
  1020. /// Toggle for monthly/annual toggle for period-toggle-improvements test
  1021. /// Based on toggle in light-touch-redesign
  1022. .monthly-annual-switch {
  1023. color: var(--neutral-90);
  1024. display: flex;
  1025. align-items: center;
  1026. justify-content: center;
  1027. position: relative;
  1028. margin-top: var(--spacing-09);
  1029. margin-bottom: var(--spacing-13);
  1030. .plans-new-discount-label {
  1031. margin-left: var(--spacing-04);
  1032. color: var(--green-50);
  1033. }
  1034. @media (max-width: @screen-xs-max) {
  1035. margin-top: var(--spacing-08);
  1036. margin-bottom: var(--spacing-08);
  1037. }
  1038. label {
  1039. position: relative;
  1040. display: inline-block;
  1041. width: 34px;
  1042. height: @plans-m-a-new-switch-height;
  1043. margin-right: var(--spacing-05);
  1044. margin-bottom: 0;
  1045. input {
  1046. opacity: 0;
  1047. width: 0;
  1048. height: 0;
  1049. }
  1050. input + span {
  1051. background-color: var(--neutral-70);
  1052. }
  1053. input:checked + span {
  1054. background-color: var(--green-50);
  1055. }
  1056. input:checked + span::before {
  1057. transform: translateX(14px);
  1058. }
  1059. span {
  1060. position: absolute;
  1061. cursor: pointer;
  1062. top: 0;
  1063. left: 0;
  1064. right: 0;
  1065. bottom: 0;
  1066. transition: 0.4s;
  1067. border-radius: @plans-m-a-new-switch-height;
  1068. &::before {
  1069. position: absolute;
  1070. content: '';
  1071. height: @plans-m-a-new-switch-height - @plans-m-a-switch-padding -
  1072. @plans-m-a-switch-padding;
  1073. width: @plans-m-a-new-switch-height - @plans-m-a-switch-padding -
  1074. @plans-m-a-switch-padding;
  1075. left: @plans-m-a-switch-padding;
  1076. bottom: @plans-m-a-switch-padding;
  1077. background-color: @white;
  1078. transition: 0.4s;
  1079. border-radius: 50%;
  1080. }
  1081. }
  1082. }
  1083. }