plans.less 32 KB

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