plans.less 36 KB

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