plans.less 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425
  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. }
  895. .group-plans-card-price-container-mobile {
  896. display: flex;
  897. align-items: center;
  898. }
  899. .plans-card-price-mobile {
  900. color: var(--neutral-90);
  901. font-size: var(--font-size-08); // 36px
  902. font-weight: 600;
  903. line-height: var(--line-height-07);
  904. margin-right: var(--spacing-03);
  905. }
  906. .light-gray-text {
  907. color: var(--neutral-70);
  908. font-size: var(--font-size-02); // 14px
  909. line-height: var(--line-height-02);
  910. }
  911. .plans-card-description-mobile {
  912. .green-round-background {
  913. width: 20px;
  914. height: 20px;
  915. }
  916. .plans-card-description-list-mobile {
  917. list-style-type: none;
  918. padding-left: 0;
  919. margin-bottom: unset;
  920. li {
  921. display: flex;
  922. margin-top: var(--spacing-05);
  923. }
  924. }
  925. .plans-card-cta-container {
  926. margin-top: var(--spacing-08);
  927. width: 100%;
  928. .btn-block + .btn-block {
  929. margin-top: var(--spacing-04);
  930. }
  931. }
  932. }
  933. }
  934. }
  935. .plans-new-group-tab-card-container {
  936. margin-top: var(--spacing-09);
  937. }
  938. .plans-features-table-section-container-mobile {
  939. margin-top: var(--spacing-13);
  940. .plans-features-section-heading-mobile {
  941. font-size: var(--font-size-06);
  942. font-weight: 600;
  943. line-height: var(--line-height-05);
  944. color: var(--neutral-90);
  945. text-align: center;
  946. margin-bottom: var(--spacing-08);
  947. }
  948. .plans-features-table-mobile {
  949. width: 100%;
  950. .plans-features-table-sticky-header {
  951. position: sticky;
  952. top: 0;
  953. }
  954. .plans-features-table-header {
  955. margin-bottom: var(--space-08);
  956. }
  957. .plans-features-table-header-container-mobile {
  958. margin: var(--spacing-08) auto;
  959. border-bottom: unset;
  960. width: 100%;
  961. max-width: 544px;
  962. .plans-features-table-header-item-mobile {
  963. width: 33%;
  964. min-width: 114px;
  965. padding: unset;
  966. .plans-features-table-header-item-content-mobile {
  967. padding: var(--spacing-04);
  968. text-align: center;
  969. background-color: var(--neutral-10);
  970. }
  971. .plans-group-features-table-header-item-content-mobile {
  972. padding: var(--spacing-04);
  973. text-align: center;
  974. background-color: var(--neutral-10);
  975. height: 64px;
  976. display: flex;
  977. justify-content: center;
  978. align-items: center;
  979. }
  980. .plans-features-table-header-item-title-mobile {
  981. color: var(--neutral-90);
  982. line-height: var(--line-height-03);
  983. font-weight: 600;
  984. font-size: var(--font-size-03);
  985. }
  986. .plans-features-table-header-item-price-mobile {
  987. font-weight: 400;
  988. color: var(--neutral-70);
  989. line-height: var(--line-height-01);
  990. font-size: var(--spacing-05);
  991. }
  992. }
  993. .highlighted-styles {
  994. background-color: var(--neutral-80);
  995. .plans-features-table-header-item-title-mobile,
  996. .plans-features-table-header-item-price-mobile {
  997. color: var(--white);
  998. }
  999. }
  1000. .plans-features-table-header-item-content-mobile.highlighted,
  1001. .plans-group-features-table-header-item-content-mobile.highlighted {
  1002. .highlighted-styles;
  1003. }
  1004. }
  1005. tr.plans-features-table-row-for-margin {
  1006. height: var(--spacing-08);
  1007. }
  1008. .plans-features-table-body-container-mobile {
  1009. .plans-features-table-row-heading-mobile {
  1010. font-weight: 600;
  1011. text-align: center;
  1012. line-height: var(--line-height-03);
  1013. .plans-features-table-row-section-heading-content-mobile {
  1014. padding-top: var(--spacing-08);
  1015. padding-bottom: var(--spacing-05);
  1016. font-size: var(--font-size-04);
  1017. color: var(--neutral-90);
  1018. }
  1019. }
  1020. // .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.
  1021. .plans-features-table-row-title-mobile {
  1022. &.plans-features-table-row-title-mobile-without-heading {
  1023. &:nth-child(4n - 3) {
  1024. background-color: var(--neutral-10);
  1025. }
  1026. &:nth-child(4n - 1) {
  1027. background-color: var(--white);
  1028. }
  1029. }
  1030. &:nth-child(4n - 2) {
  1031. background-color: var(--neutral-10);
  1032. }
  1033. &:nth-child(4n) {
  1034. background-color: var(--white);
  1035. }
  1036. .plans-features-table-row-title-content-mobile {
  1037. display: flex;
  1038. justify-content: center;
  1039. align-items: center;
  1040. padding-top: var(--spacing-06);
  1041. font-weight: 600;
  1042. line-height: var(--line-height-03);
  1043. .plans-features-table-row-title-accordion {
  1044. display: flex;
  1045. justify-content: center;
  1046. flex-direction: column;
  1047. align-items: center;
  1048. text-align: center;
  1049. padding: 0 var(--spacing-04);
  1050. .plans-features-table-row-title-accordion-header {
  1051. font-size: var(--font-size-03);
  1052. font-weight: 600;
  1053. line-height: var(--line-height-03);
  1054. display: flex;
  1055. justify-content: center;
  1056. background-color: unset;
  1057. border: unset;
  1058. .plans-features-table-row-title-accordion-icon {
  1059. display: flex;
  1060. align-items: center;
  1061. transition: transform 0.35s ease;
  1062. margin-left: var(--spacing-02);
  1063. }
  1064. &:not(.collapsed) {
  1065. .plans-features-table-row-title-accordion-icon {
  1066. transform: rotate(180deg);
  1067. transition: transform 0.35s ease;
  1068. }
  1069. }
  1070. }
  1071. .plans-features-table-row-title-accordion-body {
  1072. font-size: var(--font-size-01);
  1073. line-height: var(--line-height-01);
  1074. font-weight: 400;
  1075. }
  1076. }
  1077. }
  1078. }
  1079. .plans-features-table-row-mobile {
  1080. &.plans-features-table-row-mobile-without-heading {
  1081. &:nth-child(4n - 2) {
  1082. background-color: var(--neutral-10);
  1083. }
  1084. &:nth-child(4n) {
  1085. background-color: var(--white);
  1086. }
  1087. }
  1088. &:nth-child(4n - 3) {
  1089. background-color: var(--white);
  1090. }
  1091. &:nth-child(4n - 1) {
  1092. background-color: var(--neutral-10);
  1093. }
  1094. .plans-features-table-cell-content-mobile {
  1095. text-align: center;
  1096. padding-top: var(--spacing-05);
  1097. padding-bottom: var(--spacing-06);
  1098. }
  1099. }
  1100. }
  1101. }
  1102. }
  1103. .plans-price-disclaimer {
  1104. font-size: var(--font-size-01);
  1105. line-height: var(--line-height-01);
  1106. margin-top: var(--spacing-08);
  1107. text-align: center;
  1108. &:last-child {
  1109. margin-bottom: var(--spacing-11);
  1110. }
  1111. &:not(:last-child) {
  1112. margin-bottom: var(--spacing-08);
  1113. }
  1114. .plans-price-disclaimer-icons {
  1115. display: flex;
  1116. justify-content: center;
  1117. gap: var(--spacing-04);
  1118. }
  1119. }
  1120. .only-show-for-specific-plan-type {
  1121. display: none;
  1122. }
  1123. &[data-ol-current-plan-type='group'] {
  1124. .show-for-plan-type-group {
  1125. display: block;
  1126. }
  1127. }
  1128. &[data-ol-current-plan-type='individual'] {
  1129. .show-for-plan-type-individual {
  1130. display: block;
  1131. }
  1132. }
  1133. &[data-ol-current-plan-type='student'] {
  1134. .show-for-plan-type-student {
  1135. display: block;
  1136. }
  1137. }
  1138. .only-show-for-specific-plan-period {
  1139. display: none;
  1140. }
  1141. &[data-ol-current-plan-period='annual'] {
  1142. .show-for-plan-period-annual {
  1143. display: block;
  1144. }
  1145. }
  1146. &[data-ol-current-plan-period='monthly'] {
  1147. .show-for-plan-period-monthly {
  1148. display: block;
  1149. }
  1150. }
  1151. }
  1152. .plans-overleaf-common-request {
  1153. color: var(--neutral-90);
  1154. display: flex;
  1155. align-items: center;
  1156. justify-content: center;
  1157. margin: var(--spacing-04) var(--spacing-08);
  1158. text-align: center;
  1159. gap: var(--spacing-06);
  1160. @media (max-width: @screen-xs-max) {
  1161. flex-direction: column;
  1162. margin: 0;
  1163. }
  1164. a {
  1165. font-size: var(--font-size-02);
  1166. line-height: var(--line-height-02);
  1167. }
  1168. }
  1169. .plans-faq {
  1170. .faq-heading-container {
  1171. text-align: center;
  1172. margin-bottom: var(--spacing-10);
  1173. @media (max-width: @screen-xs-max) {
  1174. text-align: unset;
  1175. }
  1176. }
  1177. .plans-faq-support {
  1178. margin-top: var(--spacing-06);
  1179. margin-bottom: var(--spacing-06);
  1180. display: flex;
  1181. flex-direction: column;
  1182. align-items: center;
  1183. gap: var(--spacing-04);
  1184. span {
  1185. line-height: var(--line-height-03);
  1186. font-size: var(--font-size-04);
  1187. }
  1188. button {
  1189. font-family: 'DM Mono', monospace;
  1190. font-weight: 500;
  1191. text-decoration: none;
  1192. color: var(--green-50);
  1193. line-height: var(--line-height-03);
  1194. font-size: var(--font-size-04);
  1195. background-color: var(--white);
  1196. border: unset;
  1197. display: flex;
  1198. align-items: center;
  1199. }
  1200. }
  1201. }
  1202. .plans-new-design.plans-interstitial-new-design {
  1203. padding-top: var(--header-height);
  1204. padding-bottom: var(--spacing-09);
  1205. .plans-interstitial-new-content {
  1206. display: flex;
  1207. flex-direction: column;
  1208. align-items: center;
  1209. }
  1210. .plans-new-table {
  1211. th,
  1212. td {
  1213. width: @table-5-column-width;
  1214. }
  1215. }
  1216. }