cms-page.less 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667
  1. /*
  2. v2
  3. CMS Generated Pages,
  4. including About and Blog
  5. */
  6. .cms-page {
  7. &.website-redesign {
  8. h1 {
  9. font-size: 2rem; // 32px
  10. line-height: 1.333;
  11. }
  12. h2 {
  13. font-size: 1.5rem; // 24px
  14. }
  15. .sales-contact-form-left-column {
  16. .sales-contact-form-heading-title {
  17. font-size: 2.25rem;
  18. font-family: 'Noto Sans';
  19. font-style: normal;
  20. font-weight: 600;
  21. line-height: 1.333;
  22. padding-top: 8px;
  23. padding-right: 50px;
  24. }
  25. @media (min-width: @screen-xs) {
  26. .names-container {
  27. display: flex;
  28. gap: 21px;
  29. }
  30. }
  31. .checkbox-label {
  32. font-size: 16px;
  33. font-weight: 400;
  34. }
  35. }
  36. /* Buttons */
  37. // correct color property set on <a> above:
  38. .reset-btns;
  39. .alert {
  40. .alert;
  41. }
  42. .alert-info {
  43. .btn-info {
  44. .btn-alert-info;
  45. }
  46. }
  47. .p-no-text-nodes:has(.btn) {
  48. margin-top: var(--spacing-09);
  49. @media (max-width: @screen-xs-max) {
  50. .btn {
  51. width: 100%;
  52. margin-left: 0;
  53. margin-top: var(--spacing-05);
  54. }
  55. .btn:first-child {
  56. margin-top: 0;
  57. }
  58. }
  59. }
  60. .btn + .btn {
  61. margin-left: var(--spacing-06);
  62. }
  63. blockquote.quote-picture-bottom {
  64. padding: (@line-height-computed / 2) @line-height-computed;
  65. .quote-picture-and-person {
  66. font-size: 18px;
  67. }
  68. .quote-by-position {
  69. font-weight: 400;
  70. }
  71. }
  72. .optional-text {
  73. font-size: 14px;
  74. }
  75. }
  76. .section-row {
  77. margin: 0 auto;
  78. /* match .col-sm-12 */
  79. /* @grid-gutter-width is used for margins */
  80. max-width: (@screen-sm) - @grid-gutter-width!important;
  81. @media (min-width: @screen-md-min) {
  82. max-width: (@screen-md) - @grid-gutter-width!important;
  83. }
  84. @media (min-width: @screen-lg-min) {
  85. max-width: (@screen-lg) - @grid-gutter-width!important;
  86. }
  87. }
  88. padding-bottom: 0;
  89. img {
  90. height: auto;
  91. max-width: 100%;
  92. }
  93. .btn-description {
  94. margin-right: @margin-sm;
  95. }
  96. /*
  97. Tabs
  98. */
  99. .tab-content {
  100. padding-left: 0;
  101. padding-right: 0;
  102. width: 100%;
  103. }
  104. /*
  105. When on preview mode
  106. */
  107. .cms-preview {
  108. background-color: @blue;
  109. color: white;
  110. font-weight: bold;
  111. height: @navbar-padding-vertical;
  112. left: 0;
  113. line-height: @navbar-padding-vertical;
  114. opacity: 0.8;
  115. position: fixed;
  116. text-align: center;
  117. top: 0;
  118. width: 100%;
  119. z-index: 1;
  120. &:after {
  121. content: 'Preview';
  122. width: 100%;
  123. top: 0;
  124. left: 0;
  125. }
  126. }
  127. .tab-pane {
  128. .row:first-child {
  129. margin-top: 0;
  130. }
  131. }
  132. /*
  133. quotes
  134. */
  135. blockquote:not(.quote-large-text-centered):not(.quote-left-green-border) {
  136. margin: 0;
  137. position: relative;
  138. /*
  139. type.less sets <p> inline, so that quotation mark is inline
  140. but sometimes we have multiple <p>,
  141. so hide quotation mark from type.less and add one here
  142. */
  143. &:before {
  144. /* hide quotation from type.less */
  145. display: none;
  146. }
  147. p {
  148. display: block;
  149. }
  150. p:first-child {
  151. /* below copied from type.less */
  152. &:before {
  153. content: open-quote;
  154. font-size: @blockquote-font-size * 3;
  155. color: @blockquote-border-color;
  156. margin-right: 0.25em;
  157. vertical-align: -0.4em;
  158. line-height: 0.1em;
  159. }
  160. }
  161. }
  162. .quote-full-width {
  163. img {
  164. margin-right: @margin-sm;
  165. margin-bottom: @margin-sm;
  166. }
  167. }
  168. .quote-picture-bottom {
  169. border: none;
  170. color: @content-primary;
  171. .h1 {
  172. margin: 0 0 48px 0;
  173. }
  174. p:first-child {
  175. &:before {
  176. color: inherit;
  177. font-size: inherit;
  178. margin-right: 0;
  179. vertical-align: 0;
  180. line-height: inherit;
  181. position: absolute;
  182. top: (@line-height-computed / 2); // match quote padding
  183. left: 3px;
  184. }
  185. &:after {
  186. content: close-quote;
  187. }
  188. }
  189. img {
  190. height: 64px;
  191. width: 64px;
  192. margin-right: 16px;
  193. }
  194. .quote-by-position {
  195. color: @content-secondary;
  196. }
  197. .quote-picture-and-person {
  198. display: flex;
  199. }
  200. }
  201. /*
  202. Tables
  203. */
  204. .table-styled {
  205. overflow: hidden;
  206. overflow-x: auto;
  207. table {
  208. background: white;
  209. max-width: none;
  210. th,
  211. td {
  212. border: 1px solid @gray-lighter;
  213. padding: @padding-sm;
  214. text-align: center;
  215. word-break: normal;
  216. }
  217. }
  218. }
  219. .table-styled,
  220. .features-table {
  221. .fa-check-square,
  222. .fa-check {
  223. color: @ol-green;
  224. }
  225. }
  226. .features-table {
  227. max-width: none;
  228. th,
  229. td {
  230. border: 1px solid @gray-lighter;
  231. hyphens: auto;
  232. padding: @padding-sm;
  233. text-align: center;
  234. }
  235. th,
  236. td {
  237. width: 20%;
  238. }
  239. .btn {
  240. max-width: 100%;
  241. white-space: pre-wrap;
  242. word-wrap: break-word;
  243. }
  244. &.left-align-first-col {
  245. td,
  246. th {
  247. text-align: left;
  248. }
  249. td + td,
  250. th + th {
  251. text-align: center;
  252. }
  253. }
  254. .hidden-row-above-xs {
  255. display: none;
  256. }
  257. @media screen and (max-width: @screen-xs-max) {
  258. tbody,
  259. thead {
  260. display: block;
  261. }
  262. tr {
  263. display: flex;
  264. flex-flow: row wrap;
  265. justify-content: space-around;
  266. }
  267. td,
  268. th {
  269. display: block;
  270. width: 25%;
  271. }
  272. tr:first-child {
  273. th {
  274. width: 50%;
  275. }
  276. th:first-child {
  277. width: 100%;
  278. }
  279. }
  280. td:first-child {
  281. text-align: center;
  282. width: 100%;
  283. }
  284. .hidden-row-xs {
  285. display: none;
  286. }
  287. .hidden-row-above-xs {
  288. display: flex;
  289. }
  290. .table-header {
  291. text-align: center;
  292. }
  293. }
  294. }
  295. /*
  296. universities page
  297. */
  298. #universities-container {
  299. padding: @padding-md;
  300. width: 100%;
  301. .row {
  302. border-bottom: 1px solid @gray-lightest;
  303. div {
  304. padding: @padding-md;
  305. vertical-align: middle;
  306. }
  307. }
  308. .row:first-child {
  309. // parent container contains padding
  310. div {
  311. padding-top: 0;
  312. }
  313. }
  314. .row:last-child {
  315. border: 0;
  316. // parent container contains padding
  317. div {
  318. border: 0;
  319. padding-bottom: 0;
  320. }
  321. }
  322. p {
  323. margin: 0 auto;
  324. width: 100%;
  325. }
  326. // Logos
  327. .uni-logo {
  328. margin: 0 auto;
  329. max-height: 55px;
  330. min-width: 55px;
  331. }
  332. .university-claim-btn {
  333. text-align: center;
  334. }
  335. @media only screen and (min-width: @screen-xs-min) {
  336. display: table;
  337. table-layout: fixed;
  338. .row {
  339. display: table-row;
  340. div {
  341. border-bottom: 1px solid @gray-lightest;
  342. display: table-cell;
  343. float: none;
  344. }
  345. }
  346. }
  347. }
  348. /*
  349. videos
  350. */
  351. video {
  352. height: auto;
  353. max-width: 100%;
  354. }
  355. }
  356. .icon-with-content {
  357. display: flex;
  358. h2,
  359. h3,
  360. h4 {
  361. margin-top: 15px;
  362. }
  363. .icon-container {
  364. background-color: @green-10;
  365. padding: 7.5px;
  366. height: 56px;
  367. width: 56px;
  368. border-radius: 50%;
  369. margin-right: 24px;
  370. .icon-inner-container {
  371. align-items: center;
  372. border: @green-30 3.5px solid;
  373. border-radius: 50%;
  374. display: flex;
  375. justify-content: center;
  376. height: 42px;
  377. width: 42px;
  378. }
  379. i {
  380. color: @green;
  381. font-size: 21px;
  382. }
  383. }
  384. }
  385. .svg-arrow-icon {
  386. position: relative;
  387. left: 4px;
  388. bottom: 1px;
  389. }
  390. // `Layout | Grid` display options
  391. .row-equal-column-heights {
  392. @media (min-width: @screen-sm-min) {
  393. display: flex;
  394. flex-flow: row wrap;
  395. div[class*='col-'] {
  396. display: flex;
  397. flex-direction: column;
  398. .card,
  399. .no-card {
  400. height: 100%;
  401. }
  402. }
  403. }
  404. }
  405. .vertically-center-col {
  406. // remove margin to better vertically align
  407. // some elements need to be nested within a container, and others are directly within .no-card/.card
  408. .card:first-child,
  409. .no-card:first-child {
  410. .cms-element-container {
  411. > *:first-child {
  412. margin-top: 0;
  413. }
  414. }
  415. > *:first-child:not(.cms-element-container) {
  416. margin-top: 0;
  417. }
  418. }
  419. .card:last-child,
  420. .no-card:last-child {
  421. .cms-element-container {
  422. > *:last-child {
  423. margin-bottom: 0;
  424. }
  425. }
  426. > *:last-child:not(.cms-element-container) {
  427. margin-bottom: 0;
  428. }
  429. }
  430. @media (min-width: @screen-sm-min) {
  431. display: flex;
  432. div[class*='col-'] {
  433. align-self: center;
  434. }
  435. }
  436. }
  437. .reverse-col-order-mobile {
  438. @media (max-width: @screen-sm-min) {
  439. display: flex;
  440. flex-flow: column;
  441. flex-direction: column-reverse;
  442. }
  443. }
  444. .row-within-card {
  445. .no-card {
  446. > :first-child {
  447. margin-top: 0;
  448. }
  449. > :last-child {
  450. margin-bottom: 0;
  451. }
  452. }
  453. }
  454. .contact-form-error-container {
  455. padding-bottom: calc(@line-height-computed / 2);
  456. }
  457. .row-top-padding-sm {
  458. padding-top: @padding-sm;
  459. }
  460. .row-top-padding-md {
  461. padding-top: @padding-md;
  462. }
  463. .row-top-padding-lg {
  464. padding-top: @padding-lg;
  465. }
  466. .row-top-padding-xl {
  467. padding-top: @padding-xl;
  468. }
  469. .row-top-padding-xxl {
  470. padding-top: @padding-xxl;
  471. }
  472. .row-bottom-padding-sm {
  473. padding-bottom: @padding-sm;
  474. }
  475. .row-bottom-padding-md {
  476. padding-bottom: @padding-md;
  477. }
  478. .row-bottom-padding-lg {
  479. padding-bottom: @padding-lg;
  480. }
  481. .row-bottom-padding-xl {
  482. padding-bottom: @padding-xl;
  483. }
  484. .row-bottom-padding-xxl {
  485. padding-bottom: @padding-xxl;
  486. }
  487. @media (min-width: @screen-sm-min) {
  488. .desktop-left-margin-sm {
  489. margin-left: @margin-sm;
  490. }
  491. .desktop-left-margin-md {
  492. margin-left: @margin-md;
  493. }
  494. .desktop-left-margin-lg {
  495. margin-left: @margin-lg;
  496. }
  497. .desktop-left-margin-xl {
  498. margin-left: @margin-xl;
  499. }
  500. .desktop-left-margin-xxl {
  501. margin-left: @margin-xxl;
  502. }
  503. .desktop-right-margin-sm {
  504. margin-right: @margin-sm;
  505. }
  506. .desktop-right-margin-md {
  507. margin-right: @margin-md;
  508. }
  509. .desktop-right-margin-lg {
  510. margin-right: @margin-lg;
  511. }
  512. .desktop-right-margin-xl {
  513. margin-right: @margin-xl;
  514. }
  515. .desktop-right-margin-xxl {
  516. margin-right: @margin-xxl;
  517. }
  518. }
  519. .top-margin-sm {
  520. margin-top: @margin-sm;
  521. }
  522. .top-margin-md {
  523. margin-top: @margin-md;
  524. }
  525. .top-margin-lg {
  526. margin-top: @margin-lg;
  527. }
  528. .top-margin-xl {
  529. margin-top: @margin-xl;
  530. }
  531. .top-margin-xxl {
  532. margin-top: @margin-xxl;
  533. }
  534. @media (max-width: @screen-xs-max) {
  535. .mobile-bottom-margin-sm {
  536. margin-bottom: @margin-sm;
  537. }
  538. .mobile-bottom-margin-md {
  539. margin-bottom: @margin-md;
  540. }
  541. .mobile-bottom-margin-lg {
  542. margin-bottom: @margin-lg;
  543. }
  544. .mobile-bottom-margin-xl {
  545. margin-bottom: @margin-xl;
  546. }
  547. .mobile-bottom-margin-xxl {
  548. margin-bottom: @margin-xxl;
  549. }
  550. }
  551. @media (max-width: @screen-sm-min) {
  552. .col-xs-padding-sm {
  553. .col-xs-12:not(:first-child) {
  554. padding-top: @padding-sm;
  555. }
  556. }
  557. .col-xs-padding-md {
  558. .col-xs-12:not(:first-child) {
  559. padding-top: @padding-md;
  560. }
  561. }
  562. .col-xs-padding-lg {
  563. .col-xs-12:not(:first-child) {
  564. padding-top: @padding-lg;
  565. }
  566. }
  567. .col-xs-padding-xl {
  568. .col-xs-12:not(:first-child) {
  569. padding-top: @padding-xl;
  570. }
  571. }
  572. .col-xs-padding-xxl {
  573. .col-xs-12:not(:first-child) {
  574. padding-top: @padding-xxl;
  575. }
  576. }
  577. }
  578. .website-redesign {
  579. // mobile breakpoint is md in website redesign
  580. @media (max-width: @screen-sm-max) {
  581. .col-xs-padding-sm {
  582. .col-xs-12:not(:first-child) {
  583. padding-top: @padding-sm;
  584. }
  585. }
  586. .col-xs-padding-md {
  587. .col-xs-12:not(:first-child) {
  588. padding-top: @padding-md;
  589. }
  590. }
  591. .col-xs-padding-lg {
  592. .col-xs-12:not(:first-child) {
  593. padding-top: @padding-lg;
  594. }
  595. }
  596. .col-xs-padding-xl {
  597. .col-xs-12:not(:first-child) {
  598. padding-top: @padding-xl;
  599. }
  600. }
  601. .col-xs-padding-xxl {
  602. .col-xs-12:not(:first-child) {
  603. padding-top: @padding-xxl;
  604. }
  605. }
  606. }
  607. }
  608. .bottom-align-last-entry {
  609. display: flex;
  610. flex-direction: column;
  611. * {
  612. &:last-child {
  613. flex: 1;
  614. align-content: end;
  615. }
  616. }
  617. }