style.less 18 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000
  1. @import url('https://fonts.googleapis.com/css?family=Quicksand&display=swap');
  2. @import url("/fontawesome/css/all.min.css");
  3. @import url('https://fonts.googleapis.com/css?family=PT+Mono&display=swap');
  4. @import url('https://fonts.googleapis.com/css2?family=Bitter:wght@600&display=swap');
  5. * {
  6. box-sizing: border-box;
  7. }
  8. @foreground: #dfdfdf;
  9. @foreground2: #b8b8b8;
  10. @highlightFg: #ffbb00;
  11. @highlightFg2: #ffe292;
  12. @background: #222222;
  13. @background2: rgb(27, 27, 27);
  14. @background3: rgb(20, 20, 20);
  15. @background4: rgb(37, 37, 37);
  16. @visitedLink: #6d881b;
  17. @twitter: #1DA1F2;
  18. @borderRoundness: 0.3rem;
  19. @borderRoundnessVeryRound: 2rem;
  20. @borderRoundnessNotVeryRound: .1rem;
  21. @donateColor: #cf8524;
  22. @docsColor: #21ba45;
  23. @bugsColor: #2185d0;
  24. @codeColor: #db2828;
  25. @discordColor: #69005b;
  26. @storeColor: #9e9b00;
  27. @textShadow: 0.1rem;
  28. @portrait: ~"only screen and (max-width:1000px), only screen and (orientation:portrait)";
  29. @boxShadowBlur: 0.8rem;
  30. @boxShadowSpread: 0.3rem;
  31. blockquote {
  32. display: flex;
  33. flex-direction: row;
  34. align-items: center;
  35. }
  36. blockquote>*:first-child:before {
  37. content: "\f100";
  38. font-family: 'font awesome 5 free';
  39. font-weight: 700;
  40. padding: 0.5rem;
  41. }
  42. blockquote>*:first-child:after {
  43. content: "\f101";
  44. font-family: 'font awesome 5 free';
  45. font-weight: 700;
  46. padding: 0.5rem;
  47. }
  48. progress#pageLoadingProgress {
  49. position: fixed;
  50. top: 0;
  51. left: 0;
  52. width: 100%;
  53. z-index: 999;
  54. height: .6vh
  55. }
  56. progress#pageLoadingProgress[value],
  57. progress#pageLoadingProgress::-webkit-progress-bar {
  58. -webkit-appearance: none;
  59. appearance: none;
  60. -moz-appearance: none;
  61. background: @background2;
  62. border: none
  63. }
  64. progress#pageLoadingProgress::-webkit-progress-value,
  65. progress#pageLoadingProgress::-moz-progress-bar {
  66. background: @highlightFg;
  67. }
  68. // ### GENERIC STUFF
  69. html {
  70. height: 100%;
  71. width: 100%;
  72. position: absolute;
  73. top: 0;
  74. left: 0;
  75. }
  76. pre,
  77. code {
  78. position: relative;
  79. border-radius: @borderRoundness;
  80. overflow: auto !important;
  81. }
  82. .hljs-ln-numbers {
  83. -webkit-touch-callout: none;
  84. -webkit-user-select: none;
  85. -khtml-user-select: none;
  86. -moz-user-select: none;
  87. -ms-user-select: none;
  88. user-select: none;
  89. text-align: right;
  90. color: @highlightFg;
  91. vertical-align: top;
  92. }
  93. .hljs-ln tr:nth-child(odd) {
  94. background-color: @background2;
  95. }
  96. .hljs-ln-code {
  97. padding-left: 1rem !important;
  98. }
  99. // Normalize ul,li
  100. ul,
  101. li {
  102. text-decoration: none;
  103. appearance: none;
  104. list-style-type: none;
  105. padding-left: 0.5rem;
  106. margin: 0;
  107. }
  108. nav ul,
  109. nav li {
  110. text-align: left;
  111. all: unset;
  112. display: flex;
  113. white-space: nowrap;
  114. }
  115. nav ul{
  116. margin-bottom:0.5rem;
  117. }
  118. nav li:before {
  119. display: none;
  120. }
  121. .shadowed {
  122. box-shadow: 0 0 @boxShadowBlur @boxShadowSpread @background2;
  123. }
  124. .textShadowed {
  125. text-shadow:
  126. 0 0 @textShadow @background3,
  127. 0 0 @textShadow @background3,
  128. 0 0 @textShadow @background3,
  129. 0 0 @textShadow @background3,
  130. 0 0 @textShadow @background3,
  131. 0 0 @textShadow @background3,
  132. 0 0 @textShadow @background3,
  133. 0 0 @textShadow @background3,
  134. 0 0 @textShadow @background3;
  135. }
  136. .textShadowedIntense {
  137. text-shadow:
  138. 0 0 0.4vmin @background3,
  139. 0 0 0.4vmin @background3,
  140. 0 0 0.4vmin @background3,
  141. 0 0 0.4vmin @background3,
  142. 0 0 2vmin @background3,
  143. 0 0 2vmin @background3,
  144. 0 0 0.4vmin @background3;
  145. }
  146. #topmenu {
  147. background-color: @background;
  148. display: flex;
  149. flex-wrap: wrap;
  150. flex-direction: row;
  151. align-items: center;
  152. border-bottom-left-radius: @borderRoundness;
  153. border-bottom-right-radius: @borderRoundness;
  154. padding: 0.2rem;
  155. padding-left: 1rem;
  156. padding-right: 1rem;
  157. >div {
  158. flex-direction: row;
  159. @media @portrait {
  160. flex-direction: column;
  161. }
  162. }
  163. >div:first-child {
  164. // The first ul is on the left
  165. margin-right: auto;
  166. }
  167. >div:last-child {
  168. // The last ul is on the right.
  169. margin-left: auto;
  170. }
  171. }
  172. .commonButton {
  173. all: unset;
  174. appearance: none;
  175. background-color: @background2 !important;
  176. border: 0.1rem solid @background !important;
  177. border-radius: @borderRoundness;
  178. color: @highlightFg;
  179. padding: 0.3rem;
  180. padding-left: 1rem;
  181. padding-right: 1rem;
  182. text-decoration: none;
  183. margin: 0.3rem;
  184. display: inline-block;
  185. transition: 0.5s background-color;
  186. border-radius: @borderRoundnessNotVeryRound;
  187. padding: 0.6rem;
  188. padding-left: 1rem;
  189. padding-right: 1rem;
  190. .genericCl();
  191. a {
  192. text-decoration: none !important;
  193. }
  194. .shadowed();
  195. }
  196. button {
  197. .commonButton();
  198. }
  199. button:hover {
  200. filter: brightness(130%);
  201. }
  202. nav {
  203. display: flex;
  204. flex-wrap: wrap;
  205. flex-direction: column;
  206. ul {
  207. display: flex;
  208. flex-direction: column;
  209. }
  210. }
  211. a,
  212. a:hover,
  213. a:visited {
  214. color: inherit;
  215. text-decoration: inherit;
  216. color: @highlightFg;
  217. }
  218. a:hover {
  219. text-decoration: underline;
  220. }
  221. h1 a,
  222. h2 a,
  223. h1 a:visited,
  224. h2 a:visited,
  225. h1 a:hover,
  226. h2 a:hover,
  227. header a,
  228. header a:hover,
  229. header a:visited {
  230. color: inherit;
  231. }
  232. h1 {
  233. position: relative;
  234. }
  235. h1 {
  236. font-size: 2rem;
  237. }
  238. h2 {
  239. font-size: 1.5rem;
  240. }
  241. h3 {
  242. font-size: 1.2rem;
  243. }
  244. h2,
  245. h1,
  246. h3 {
  247. margin: 0;
  248. padding: 0;
  249. margin-bottom: 1rem;
  250. color: @highlightFg;
  251. }
  252. h2,
  253. h3 {
  254. margin-top: 0.1rem;
  255. margin-bottom: 0.1rem;
  256. }
  257. .toggleNavOnPortraitButton {
  258. font-size: 2rem;
  259. display: none;
  260. color: @highlightFg;
  261. cursor: pointer;
  262. &:hover {
  263. color: @highlightFg2;
  264. }
  265. }
  266. // Useless things are hidden inportrait mode.
  267. @media @portrait {
  268. .useless {
  269. display: none;
  270. }
  271. }
  272. @media @portrait {
  273. .toggleNavOnPortraitButton {
  274. display: block;
  275. }
  276. nav.toggleOnPortrait {
  277. >* {
  278. flex-direction: column;
  279. display: none;
  280. }
  281. >.toggledOn {
  282. flex-direction: column;
  283. display: flex;
  284. }
  285. align-items: center;
  286. }
  287. }
  288. // Give padding to all the icons (from font awesome)
  289. *>i.fas:first-child,
  290. *>i.fab:first-child {
  291. // This is the icon
  292. padding-right: .4rem;
  293. }
  294. // #####
  295. .genericCl {
  296. background: @background2 !important;
  297. color: @foreground !important;
  298. font-weight: bold;
  299. }
  300. .donateCl {
  301. .genericCl();
  302. background: @donateColor !important;
  303. }
  304. .docsCl {
  305. .genericCl();
  306. background: @docsColor !important;
  307. }
  308. .bugsCl {
  309. .genericCl();
  310. background: @bugsColor !important;
  311. }
  312. .codeCl {
  313. .genericCl();
  314. background: @codeColor !important;
  315. }
  316. .discordCl {
  317. .genericCl();
  318. background: @discordColor !important;
  319. }
  320. .storeCl {
  321. .genericCl();
  322. background: @storeColor !important;
  323. }
  324. figure.githubUser {
  325. display: flex;
  326. flex-direction: row;
  327. text-align: left;
  328. align-items: center;
  329. padding: 0;
  330. margin: 2rem;
  331. &.inline {
  332. margin: 0;
  333. >img {
  334. max-height: 3rem;
  335. }
  336. h2 {
  337. font-size: 1.2rem;
  338. }
  339. >.githubBio {
  340. display: none;
  341. }
  342. margin-top:2rem;
  343. margin-bottom:.5rem;
  344. padding-bottom:1rem;
  345. border-bottom: 0.1rem solid @highlightFg;
  346. }
  347. >* {
  348. padding: 0;
  349. margin: 0;
  350. }
  351. >img {
  352. box-shadow: 0 0 0.2rem 0.01rem @highlightFg;
  353. border-radius: 8rem;
  354. max-height: 6rem;
  355. }
  356. >figcaption {
  357. margin-left: 1rem;
  358. >h2 {
  359. padding: 0;
  360. margin: 0;
  361. }
  362. display:flex;
  363. flex-direction: column;
  364. }
  365. }
  366. body {
  367. text-align: left;
  368. overflow-x: hidden;
  369. font-family: 'Quicksand', serif;
  370. background: @background !important;
  371. color: @foreground !important;
  372. min-height: 100%;
  373. width: 100%;
  374. position: relative;
  375. margin: 0;
  376. padding: 0;
  377. display: flex;
  378. flex-direction: column;
  379. align-items: center;
  380. font-size: .8706rem;
  381. .textShadowed();
  382. // The main footer
  383. >footer {
  384. margin-top: 4rem; // Makes the page nicer by preventing it from abruptly end at the end of the content.
  385. }
  386. >main {
  387. // The main is the main content
  388. font-size: 1rem;
  389. width: 100%;
  390. // Those are unbound headers right under the main.
  391. >h1 {
  392. text-align: center;
  393. margin: auto;
  394. max-width: 600px;
  395. padding-top: 1rem;
  396. padding-bottom: 1rem;
  397. margin-top: 0.5rem;
  398. &:before,
  399. &:after {
  400. content: "\f107";
  401. font-family: 'font awesome 5 free';
  402. font-weight: 700;
  403. padding: 0.5rem;
  404. }
  405. }
  406. }
  407. // The main header
  408. >header {
  409. position: relative;
  410. z-index: 99;
  411. display: flex;
  412. flex-direction: column;
  413. align-items: center;
  414. background-color: @background2;
  415. box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.25);
  416. width: 100%;
  417. margin: 0;
  418. padding: 0;
  419. #siteTitle {
  420. color: @highlightFg;
  421. display: flex;
  422. flex-direction: row;
  423. text-align: center;
  424. /* justify-items: center;
  425. justify-content: center; */
  426. align-items: center;
  427. margin: 0;
  428. padding: 0;
  429. padding-top: 1rem;
  430. padding-bottom: 1rem;
  431. }
  432. }
  433. }
  434. @media @portrait {
  435. header {
  436. #logo {
  437. display: flex;
  438. flex-direction: row;
  439. width: 100%;
  440. align-items: center;
  441. .toggleNavOnPortraitButton {
  442. margin-right: 1rem;
  443. margin-left: auto;
  444. }
  445. }
  446. flex-direction: column;
  447. >#siteTitle {
  448. flex-direction: column !important;
  449. text-align: left !important;
  450. align-items: flex-start !important;
  451. >#contributionsBanner {
  452. text-align: left !important;
  453. margin-left: 1rem !important;
  454. margin-top: 1rem !important;
  455. }
  456. }
  457. }
  458. }
  459. // Something that links to more something
  460. .more {
  461. text-align: right;
  462. display: block;
  463. }
  464. // Cover, is something that fills an area to show an image/video
  465. .cover {
  466. width: 100%;
  467. height: 100%;
  468. background-color: rgba(0, 0, 0, 0.45);
  469. background-position: center;
  470. background-size: cover;
  471. position: absolute;
  472. top: 0;
  473. left: 0;
  474. z-index: -1;
  475. object-fit: cover;
  476. pointer-events: none;
  477. box-shadow: 0 0 0.3rem 0.04rem @background2;
  478. &.gallery {
  479. background-size: contain;
  480. background-repeat: no-repeat;
  481. pointer-events: auto;
  482. object-fit: contain;
  483. z-index: 0;
  484. }
  485. &.blur {
  486. filter: blur(100vh);
  487. margin-top: 50vh;
  488. }
  489. }
  490. // A width that is not too wide.
  491. .responsiveWidth {
  492. max-width: 1200px;
  493. width: 99vw;
  494. margin-left:auto;
  495. margin-right:auto;
  496. }
  497. #backerMessages {
  498. text-align: center;
  499. width: 100%;
  500. }
  501. #contributionsBanner {
  502. text-align: right !important;
  503. margin-left: auto;
  504. }
  505. // A flex list
  506. .list {
  507. display: flex;
  508. flex-wrap: wrap;
  509. justify-content: center;
  510. &.hlist {
  511. flex-direction: row;
  512. >article {
  513. flex-basis: 30%;
  514. }
  515. }
  516. &.vlist {
  517. display: flex;
  518. flex-direction: column;
  519. }
  520. }
  521. .collapsedList {
  522. article {
  523. border-radius: 0;
  524. margin-top: 0;
  525. margin-bottom: 0;
  526. flex-basis: 100%;
  527. h1 {
  528. border-radius: 0;
  529. }
  530. &:last-child {
  531. margin-bottom: 1rem;
  532. border-bottom-left-radius: @borderRoundness;
  533. border-bottom-right-radius: @borderRoundness;
  534. }
  535. &:first-child {
  536. margin-top: 1rem;
  537. border-top-left-radius: @borderRoundness;
  538. border-top-right-radius: @borderRoundness;
  539. h1 {
  540. border-top-left-radius: @borderRoundness;
  541. border-top-right-radius: @borderRoundness;
  542. }
  543. }
  544. }
  545. }
  546. main>section {
  547. text-align: center;
  548. margin: auto;
  549. }
  550. // This is a section, of the page
  551. section {
  552. display: block;
  553. position: relative;
  554. text-align: left;
  555. margin-bottom: 1rem;
  556. margin-top: 1rem;
  557. // &.full {
  558. // display: flex;
  559. // flex-direction: column;
  560. // }
  561. >article {
  562. // An article, is the content.
  563. .shadowed();
  564. text-align: left;
  565. background: @background2;
  566. border-radius: @borderRoundness;
  567. margin: 1rem;
  568. display: flex;
  569. flex-direction: column;
  570. h1 {}
  571. .more {
  572. text-align: left;
  573. }
  574. >h1:first-of-type {
  575. // This is the top bar in the article. The main title basically.
  576. border-radius: @borderRoundness;
  577. background: @background4;
  578. color: @foreground2;
  579. margin: 0;
  580. padding: 0;
  581. display: block;
  582. padding: 0.7rem;
  583. padding-left: 0.5rem;
  584. padding-right: 0.1rem;
  585. font-size: 1.3rem;
  586. width: 100%;
  587. border-bottom-left-radius: 0;
  588. border-bottom-right-radius: 0;
  589. overflow: hidden;
  590. word-wrap: normal;
  591. }
  592. >div.content {
  593. padding: 1rem;
  594. display: flex;
  595. flex-direction: row;
  596. align-items: stretch;
  597. min-width: 0;
  598. width: 100%;
  599. @media @portrait {
  600. display: flex;
  601. flex-direction: column;
  602. }
  603. li {
  604. // Adds little arrows before the li.
  605. list-style: none;
  606. &:before {
  607. content: "\f054";
  608. font-family: 'font awesome 5 free';
  609. font-weight: 700;
  610. padding-right: 0.5rem;
  611. }
  612. }
  613. p:first-of-type {
  614. // Remove margin from first p
  615. margin-top: 0 !important;
  616. padding-top: 0 !important;
  617. }
  618. >span {
  619. display: block;
  620. overflow-wrap: break-word;
  621. }
  622. >nav {
  623. margin-left: 2rem;
  624. flex-direction: column;
  625. align-items: baseline;
  626. flex-wrap: wrap;
  627. color: @highlightFg;
  628. >ul {
  629. width: 100%;
  630. }
  631. >ul li {
  632. width: 100%;
  633. // Special smaller ul
  634. background: none;
  635. border: none !important;
  636. margin: 0.1rem;
  637. margin-left: 0rem;
  638. font-size: 0.8rem;
  639. box-shadow: none;
  640. >* {
  641. margin-left: 1rem;
  642. }
  643. button {
  644. width: 100%;
  645. margin: 0;
  646. }
  647. }
  648. @media @portrait {
  649. ul li {
  650. // make nav in list section more compact
  651. margin: 0.1rem;
  652. padding: 0;
  653. width: auto;
  654. }
  655. >ul {
  656. margin-right: 0.4rem;
  657. width: auto;
  658. }
  659. }
  660. @media @portrait {
  661. margin-left: 0;
  662. flex-direction: row;
  663. }
  664. }
  665. }
  666. }
  667. &.list {
  668. >article {
  669. >div.content {
  670. // When the section is a list, we use a column layout. Helps keeping it compact
  671. display: flex;
  672. flex-direction: column;
  673. nav {
  674. flex-direction: row;
  675. }
  676. nav .share {
  677. // Share buttons are hidden in list section
  678. display: none !important;
  679. }
  680. ul {
  681. width: auto;
  682. li {
  683. width: auto;
  684. }
  685. }
  686. nav,
  687. nav ul li {
  688. // make nav in list section more compact
  689. margin: 0.1rem;
  690. padding: 0;
  691. }
  692. }
  693. }
  694. }
  695. }
  696. // Horizzontal lists are collapsed vertically in portrait mode.
  697. @media @portrait {
  698. section.hlist.responsive {
  699. .collapsedList();
  700. }
  701. }
  702. // This is a special section
  703. section#contribute {
  704. .collapsedList();
  705. }
  706. /*******/
  707. button:hover {
  708. background-color: @background !important;
  709. }
  710. section#showcase {
  711. text-align: center;
  712. width: 100%;
  713. margin-top: 0;
  714. margin-bottom: 0;
  715. padding: 0;
  716. display: flex;
  717. position:relative;
  718. flex-direction: column;
  719. min-height:40vh;
  720. .textShadowedIntense();
  721. #gameDescription {
  722. text-align: right !important;
  723. width: 50%;
  724. font-size: 0.8rem;
  725. margin-top: auto;
  726. margin-right: 0 !important;
  727. margin-left: auto;
  728. height: auto;
  729. display: block;
  730. }
  731. #gameDescription h2 {
  732. text-align: left !important;
  733. font-size: 0.9rem;
  734. }
  735. #engineDescription {
  736. font-size: 1.4rem;
  737. text-align: center;
  738. width: 100%;
  739. display: block;
  740. }
  741. #showCasePrev,
  742. #showCaseNext {
  743. display: block;
  744. cursor: pointer;
  745. position: absolute;
  746. color: @highlightFg;
  747. }
  748. #showCasePrev {
  749. font-size: 4rem;
  750. bottom: 1rem;
  751. left: 1rem;
  752. }
  753. #showCaseNext {
  754. font-size: 4rem;
  755. bottom: 1rem;
  756. right: 1rem;
  757. }
  758. > div {
  759. padding: 1rem;
  760. background: none;
  761. box-shadow: none;
  762. width: 100%;
  763. display: block;
  764. background-position: center;
  765. background-size: cover;
  766. margin-top: 0;
  767. margin-bottom: 0;
  768. }
  769. @media @portrait {
  770. #gameDescription h2 {
  771. text-align: center !important;
  772. }
  773. #gameDescription {
  774. text-align: center !important;
  775. width: 100%;
  776. }
  777. #engineDescription {
  778. text-align: center !important;
  779. font-size: 1.1rem;
  780. }
  781. }
  782. }