less copy protection, more size visualization
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

984 lines
16 KiB

  1. @import url('https://fonts.googleapis.com/css?family=Coda&display=swap');
  2. html {
  3. height: 100%;
  4. width: 100%;
  5. box-sizing: border-box;
  6. overflow-x: hidden;
  7. overflow-y: hidden;
  8. color: #eee;
  9. }
  10. body {
  11. position: relative;
  12. background: #333;
  13. display: flex;
  14. flex-direction: column;
  15. align-items: center;
  16. justify-content: flex-start;
  17. height: 100%;
  18. width: 100%;
  19. font-family: 'Coda', sans-serif;
  20. }
  21. .entity-box {
  22. position: absolute;
  23. --height: 100px;
  24. --brightness: 1;
  25. max-height: var(--height);
  26. height: var(--height);
  27. text-align: center;
  28. -webkit-user-drag: none;
  29. -khtml-user-drag: none;
  30. -moz-user-drag: none;
  31. -o-user-drag: none;
  32. pointer-events: none;
  33. }
  34. body.smoothing .entity-box {
  35. transition: left 0.2s cubic-bezier(.1,.41,.18,.99), top 0.2s cubic-bezier(.1,.41,.18,.99), height 0.2s cubic-bezier(.1,.41,.18,.99), max-height 0.2s cubic-bezier(.1,.41,.18,.99);
  36. }
  37. .entity-image {
  38. display: block;
  39. height: 100%;
  40. pointer-events: auto;
  41. -webkit-user-drag: none;
  42. -khtml-user-drag: none;
  43. -moz-user-drag: none;
  44. -o-user-drag: none;
  45. --offset: -100%;
  46. transform: translate(-50%, var(--offset));
  47. filter: brightness(var(--brightness));
  48. }
  49. .entity-image.flipped {
  50. transform: translate(-50%, var(--offset)) scale(-1, 1);
  51. }
  52. .entity-name {
  53. display: none;
  54. position: absolute;
  55. top: calc(-100% + var(--extra) / 2);
  56. left: 0%;
  57. transform: translate(-50%, -36px);
  58. font-size: 24px;
  59. pointer-events: none;
  60. max-width: 250px;
  61. width: 250px;
  62. transition: all 0s;
  63. }
  64. body.toggle-entity-name .entity-name,
  65. .entity-box.selected .entity-name {
  66. display: inline;
  67. }
  68. .entity-box.selected > img {
  69. filter: brightness(var(--brightness)) drop-shadow(0px 0px 5px gold);
  70. }
  71. .entity-box.prevSelected > img {
  72. filter: brightness(var(--brightness)) drop-shadow(0px 0px 5px darkorange);
  73. }
  74. body.toggle-entity-glow .entity-box:not(.selected) > img{
  75. filter: brightness(var(--brightness)) drop-shadow(0px 0px 2px white);
  76. }
  77. #main-area {
  78. min-height: 0px;
  79. display: flex;
  80. flex: 1 1 90vh;
  81. width: 100%;
  82. flex-direction: row;
  83. }
  84. #options {
  85. position: relative;
  86. flex: 1 1 10vw;
  87. min-width: 100pt;
  88. display: flex;
  89. justify-content: start;
  90. flex-direction: column;
  91. background: #444;
  92. overflow-x: hidden;
  93. overflow-y: auto;
  94. width: 100%;
  95. height: 100%;
  96. scrollbar-color: #e1e1e1 #888;
  97. }
  98. #options.hidden {
  99. min-width: 0pt;
  100. flex: 0 1 0vw;
  101. }
  102. #options-attribution {
  103. display: none;
  104. }
  105. #options::-webkit-scrollbar {
  106. height: 2px;
  107. }
  108. #options::-webkit-scrollbar-button {
  109. width: 0px;
  110. height: 0px;
  111. }
  112. #options::-webkit-scrollbar-thumb {
  113. background: #e1e1e1;
  114. border: 0px none #ffffff;
  115. border-radius: 50px;
  116. }
  117. #options::-webkit-scrollbar-thumb:hover {
  118. background: #ffffff;
  119. }
  120. #options::-webkit-scrollbar-thumb:active {
  121. background: #000000;
  122. }
  123. #options::-webkit-scrollbar-track {
  124. background: #00000000;
  125. border: 0px none #ffffff;
  126. border-radius: 50px;
  127. }
  128. #options::-webkit-scrollbar-track:hover {
  129. background: #666666;
  130. }
  131. #options::-webkit-scrollbar-track:active {
  132. background: #333333;
  133. }
  134. #options::-webkit-scrollbar-corner {
  135. background: transparent;
  136. }
  137. .options-two-buttons {
  138. display: flex;
  139. justify-content: space-evenly;
  140. }
  141. .options-two-buttons > button {
  142. font-size: 18pt;
  143. }
  144. .options-category {
  145. position: relative;
  146. }
  147. .options-row {
  148. position: relative;
  149. flex-direction: column;
  150. flex-wrap: wrap;
  151. display: flex;
  152. text-align: center;
  153. align-items: center;
  154. margin-left: auto;
  155. margin-right: auto;
  156. margin-top: 8px;
  157. margin-bottom: 8px;
  158. }
  159. .options-row.full {
  160. min-width: 90%;
  161. }
  162. .options-block {
  163. display: flex;
  164. text-align: center;
  165. min-width: 90%;
  166. width: 90%;
  167. margin: auto;
  168. flex-direction: column;
  169. }
  170. .options-label {
  171. text-align: center;
  172. user-select: none;
  173. margin-top: 12px;
  174. margin-bottom: 4px;
  175. }
  176. .options-block.options-block-optional {
  177. display: none;
  178. }
  179. body.show-extra-options .options-block.options-block-optional {
  180. display: flex;
  181. }
  182. .options-header {
  183. text-align: center;
  184. font-size: 24pt;
  185. margin-top: 10px;
  186. margin-bottom: 10px;
  187. background: #333;
  188. user-select: none;
  189. }
  190. .options-banner-buttons {
  191. width: 100%;
  192. text-align: center;
  193. margin-top: 10px;
  194. }
  195. .options-banner-button {
  196. display: inline-block;
  197. text-align: center;
  198. font-size: 24pt;
  199. background: #262;
  200. text-decoration: none;
  201. user-select: none;
  202. border-radius: 6pt;
  203. margin: 10px;
  204. border-color: #666;
  205. border-width: 3pt;
  206. border-style: outset;
  207. width: 90%;
  208. }
  209. .options-banner-button:hover {
  210. background: #282;
  211. }
  212. .options-banner-button:active {
  213. background: #272;
  214. border-style: inset;
  215. }
  216. .options-selector {
  217. font-size: 150%;
  218. width: 100%;
  219. }
  220. .button-img {
  221. height: 24pt;
  222. }
  223. #entities {
  224. position: absolute;
  225. user-select: none;
  226. width: 100%;
  227. height: 100%;
  228. }
  229. #world {
  230. position: relative;
  231. flex: 1 1 85vw;
  232. height: 100%;
  233. overflow: hidden;
  234. }
  235. #menubar {
  236. display: flex;
  237. flex: 1 0 5vh;
  238. flex-direction: row;
  239. justify-content: space-evenly;
  240. align-items: center;
  241. flex-wrap: wrap;
  242. min-width: 100vw;
  243. background: #222;
  244. }
  245. #menubar.hover-delete {
  246. background: #922;
  247. }
  248. .menubar-group {
  249. display: flex;
  250. flex-direction: row;
  251. }
  252. .menubar-group button {
  253. width: 48pt;
  254. height: 48pt;
  255. }
  256. .popout-group {
  257. margin: 20px;
  258. display: flex;
  259. flex-direction: column;
  260. }
  261. .menu-item {
  262. font-size: 24px;
  263. color: #ccc;
  264. margin: 20px;
  265. }
  266. select.menu-item {
  267. color: #000;
  268. }
  269. #rulers {
  270. position: absolute;
  271. display: block;
  272. width: 100%;
  273. height: 100%;
  274. background: #00000000;
  275. z-index: 1001;
  276. pointer-events: none;
  277. }
  278. #display {
  279. display: block;
  280. width: 100%;
  281. height: 100%;
  282. background: #333;
  283. }
  284. #options .options-label,
  285. #options .options-banner {
  286. flex: 0 1;
  287. font-size: 150%;
  288. }
  289. #options .options-label {
  290. width: 100%;
  291. }
  292. #options .options-banner {
  293. width: calc(100% - 20px);
  294. }
  295. input {
  296. padding: 2px;
  297. }
  298. select {
  299. padding: 2px;
  300. }
  301. .options-row .options-field-numeric {
  302. flex: 0 1 50%;
  303. font-size: 150%;
  304. width: calc(90% - 12px);
  305. padding-left: 4px;
  306. padding-right: 4px;
  307. }
  308. .options-row .options-field-text {
  309. flex: 1 0 90%;
  310. font-size: 150%;
  311. width: 90%;
  312. }
  313. .options-row .options-field-unit {
  314. flex: 0 1 50%;
  315. font-size: 150%;
  316. width: 90%;
  317. padding-left: 4px;
  318. padding-right: 4px;
  319. }
  320. .options-row .options-field-picker {
  321. flex: 1;
  322. width: 100%;
  323. min-width: 90%;
  324. max-width: 90%;
  325. font-size: 150%;
  326. overflow: hidden;
  327. white-space: pre-wrap;
  328. word-break: normal;
  329. text-overflow: ellipsis;
  330. }
  331. .options-row .symbol-button {
  332. width: 75px;
  333. font-size: 70px;
  334. }
  335. .options-row .options-button {
  336. flex: 1;
  337. width: 100%;
  338. font-size: 150%;
  339. }
  340. .options-block .options-button {
  341. flex: 1;
  342. width: 100%;
  343. font-size: 150%;
  344. }
  345. .options-row label {
  346. flex: 1;
  347. width: 100%;
  348. font-size: 150%;
  349. }
  350. body #test-canvas {
  351. position: fixed;
  352. top: 500vh;
  353. }
  354. .switch {
  355. height: 24pt;
  356. }
  357. .switch input {
  358. transform: scale(2);
  359. }
  360. .top-name {
  361. display: none;
  362. text-align: center;
  363. position: fixed;
  364. max-width: 150px;
  365. height: 50px;
  366. transform: translate(-50%, 20pt);
  367. z-index: 1001;
  368. }
  369. body.toggle-top-name .top-name.top-name-needed {
  370. display: block;
  371. }
  372. .top-name::after {
  373. display: block;
  374. background-image: url("./media/ui/arrow.svg");
  375. width: 70px;
  376. height: 70px;
  377. background-size: 70px 70px;
  378. background-repeat: no-repeat;
  379. content: "";
  380. transform: translate(0, -120%);
  381. }
  382. .bottom-name {
  383. display: none;
  384. text-align: center;
  385. position: fixed;
  386. width: 150px;
  387. height: 50px;
  388. z-index: 10001;
  389. transform: translate(-50%, 0pt);
  390. }
  391. body.toggle-bottom-name .bottom-name {
  392. display: inline;
  393. }
  394. #menubar select {
  395. font-size: 16pt;
  396. max-width: 200pt;
  397. min-width: 120pt;
  398. height: 40pt;
  399. max-height: 180pt;
  400. overflow: hidden;
  401. white-space: pre-wrap;
  402. word-break: normal;
  403. text-overflow: ellipsis;
  404. }
  405. #menubar button {
  406. position: relative;
  407. font-size: 32pt;
  408. height: 40pt;
  409. z-index: 1;
  410. }
  411. #open-help {
  412. padding-top: 1pt;
  413. }
  414. #open-help.highlighted::after {
  415. position: absolute;
  416. top: 0;
  417. left: 0;
  418. content: " ";
  419. display: block;
  420. height: 100%;
  421. width: 100%;
  422. background: inherit;
  423. filter: drop-shadow(0px 0px 10px white) drop-shadow(0px 0px 10px white);
  424. z-index: -1;
  425. animation: pulsing 5s linear 0s infinite;
  426. }
  427. @keyframes pulsing {
  428. 0% {
  429. opacity: 100%;
  430. }
  431. 50% {
  432. opacity: 25%;
  433. }
  434. 100% {
  435. opacity: 100%;
  436. }
  437. }
  438. a {
  439. color: #999;
  440. }
  441. #options-attribution-authors {
  442. text-align: center;
  443. }
  444. #options-attribution-owners {
  445. text-align: center;
  446. }
  447. #options-attribution-source {
  448. text-align: center;
  449. }
  450. #options-attribution-citations {
  451. text-align: center;
  452. }
  453. .no-transition {
  454. transition: 0s !important;
  455. }
  456. input[type=checkbox] {
  457. transform: scale(2);
  458. margin-left: 10px;
  459. margin-right: 10px;
  460. }
  461. input ~ label {
  462. user-select: none;
  463. }
  464. body.toggle-height-bars .height-bar,
  465. .entity-box.selected .height-bar {
  466. display: block;
  467. }
  468. .height-bar {
  469. display: none;
  470. min-width: calc(var(--xpos));
  471. min-height: 3px;
  472. height: 3px;
  473. position: absolute;
  474. opacity: 50%;
  475. background: repeating-linear-gradient(90deg, #ffffff, #ffffff 20px, #ffffff00 20px, #ffffff00 40px);
  476. top: calc(-100% + var(--extra));
  477. left: calc(-1 * var(--xpos));
  478. transition: 0s all;
  479. z-index: -1;
  480. }
  481. .height-bar::before {
  482. display: block;
  483. background: gray;
  484. position: absolute;
  485. content: var(--entity-height);
  486. transition: 0s all;
  487. }
  488. .height-bar::after {
  489. display: block;
  490. min-width: 24px;
  491. min-height: 3px;
  492. background: #ffffff;
  493. position: absolute;
  494. left: calc(var(--xpos) - 24px);
  495. transition: 0s all;
  496. content: "";
  497. }
  498. .sr-only {
  499. position: absolute;
  500. width: 1px;
  501. height: 1px;
  502. padding: 0;
  503. margin: -1px;
  504. overflow: hidden;
  505. clip: rect(0,0,0,0);
  506. border: 0;
  507. }
  508. .bottom-cover {
  509. display: none;
  510. position: absolute;
  511. width: 100%;
  512. height: 100vh;
  513. left: 0%;
  514. top: calc(100% - 51px);
  515. background: black;
  516. }
  517. body.toggle-bottom-cover .bottom-cover {
  518. display: inline-block;
  519. }
  520. .transitions {
  521. transition: 0.2s all;
  522. }
  523. .rotate-forward {
  524. transform: rotate(-90deg);
  525. }
  526. .rotate-backward {
  527. transform: rotate(90deg);
  528. }
  529. .flipped {
  530. transform: rotate(180deg);
  531. }
  532. i.fas
  533. i.far {
  534. pointer-events: none;
  535. }
  536. #help-icons {
  537. display: flex;
  538. flex-direction: column;
  539. flex-wrap: wrap;
  540. width: 50vw;
  541. }
  542. #help-icons > div {
  543. flex-basis: 25%;
  544. font-size: 150%;
  545. }
  546. #entity-view {
  547. text-align: center;
  548. font-weight: bold;
  549. font-size: 200%;
  550. }
  551. #entity-view option {
  552. font-weight: normal;
  553. }
  554. #spawners > select,
  555. #spawners > button,
  556. #filters > select,
  557. #filters > button {
  558. display: none;
  559. }
  560. #spawners > select#category-picker,
  561. #filters > select#filter-picker {
  562. display: block;
  563. }
  564. #spawners > select.category-visible,
  565. #spawners > select.category-visible + button,
  566. #filters > select.category-visible,
  567. #filters > select.category-visible + button {
  568. display: block;
  569. }
  570. option.filtered {
  571. display: none;
  572. }
  573. #spawners > select,
  574. #filters > select {
  575. font-size: 24pt;
  576. }
  577. #spawners > button {
  578. font-size: 30pt;
  579. }
  580. #spawners-categories {
  581. font-size: 24pt;
  582. }
  583. .scroll-button {
  584. transition: 0.2s;
  585. position: absolute;
  586. height: 20%;
  587. width: 50px;
  588. font-size: 28px;
  589. background: #ffffff33;
  590. border: 0px;
  591. z-index: 1002;
  592. }
  593. .scroll-button:active {
  594. background: #ffffff66;
  595. }
  596. .scroll-button:hover {
  597. transition: 0.2s;
  598. font-size: 32px;
  599. background: #ffffff44;
  600. }
  601. .scroll-button:disabled {
  602. transition: 0s;
  603. background: #ffffff11;
  604. font-size: 28px;
  605. }
  606. .ratio-info {
  607. position: absolute;
  608. top: 5%;
  609. right: 5%;
  610. z-index: 1002;
  611. pointer-events: none;
  612. }
  613. #zoom-out {
  614. left: 0%;
  615. top: 0%;
  616. }
  617. #zoom-in {
  618. right: 0%;
  619. top: 0%;
  620. }
  621. #scroll-left {
  622. left: 0%;
  623. top: 20%;
  624. }
  625. #scroll-right {
  626. right: 0%;
  627. top: 20%;
  628. }
  629. #scroll-up {
  630. left: 0%;
  631. top: 40%;
  632. }
  633. #scroll-down {
  634. right: 0%;
  635. top: 40%;
  636. }
  637. #shrink {
  638. left: 0%;
  639. top: 60%;
  640. }
  641. #grow {
  642. right: 0%;
  643. top: 60%;
  644. }
  645. #ruler {
  646. left: 0%;
  647. top: 80%;
  648. }
  649. #fit {
  650. right: 0%;
  651. top: 80%;
  652. }
  653. #toggle-menu {
  654. padding-top: 2pt;
  655. position: relative;
  656. }
  657. .popout-menu {
  658. display: none;
  659. flex-direction: column;
  660. flex-wrap: nowrap;
  661. overflow-y: scroll;
  662. max-height: 80vh;
  663. justify-content: start;
  664. position: fixed;
  665. top: 10%;
  666. left: 10%;
  667. z-index: 10000;
  668. background: #222;
  669. border-color: #333;
  670. border-width: 5px;
  671. border-style: solid;
  672. }
  673. .popout-menu::-webkit-scrollbar {
  674. height: 2px;
  675. }
  676. .popout-menu::-webkit-scrollbar-button {
  677. width: 0px;
  678. height: 0px;
  679. }
  680. .popout-menu::-webkit-scrollbar-thumb {
  681. background: #e1e1e1;
  682. border: 0px none #ffffff;
  683. border-radius: 50px;
  684. }
  685. .popout-menu::-webkit-scrollbar-thumb:hover {
  686. background: #ffffff;
  687. }
  688. .popout-menu::-webkit-scrollbar-thumb:active {
  689. background: #000000;
  690. }
  691. .popout-menu::-webkit-scrollbar-track {
  692. background: #00000000;
  693. border: 0px none #ffffff;
  694. border-radius: 50px;
  695. }
  696. .popout-menu::-webkit-scrollbar-track:hover {
  697. background: #666666;
  698. }
  699. .popout-menu::-webkit-scrollbar-track:active {
  700. background: #333333;
  701. }
  702. .popout-menu::-webkit-scrollbar-corner {
  703. background: transparent;
  704. }
  705. .popout-menu.visible {
  706. display: flex;
  707. }
  708. .menu-button {
  709. height: 48pt;
  710. width: 56pt;
  711. font-size: 40pt;
  712. }
  713. .menu-button-holder {
  714. display: flex;
  715. align-items: center;
  716. margin: 5px 0px 5px;
  717. }
  718. .menu-text {
  719. font-size: 24pt;
  720. margin-left: 6pt;
  721. }
  722. #options-entity-defaults > button {
  723. word-break: break-word;
  724. }
  725. button {
  726. border: 3px;
  727. border-style: outset;
  728. }
  729. button:hover {
  730. background: #555;
  731. }
  732. button:enabled:active {
  733. border-style: inset;
  734. background: #aaa;
  735. }
  736. .toast {
  737. position: absolute;
  738. bottom: 10%;
  739. left: 50%;
  740. animation-name: toast-animation;
  741. animation-duration: 5s;
  742. animation-timing-function: linear;
  743. z-index: 99999;
  744. }
  745. @keyframes toast-animation {
  746. 0% {
  747. transform: translate(-50%, 0);
  748. opacity: 1;
  749. }
  750. 50% {
  751. transform: translate(-50%, -10vh);
  752. opacity: 1;
  753. }
  754. 100% {
  755. transform: translate(-50%, -20vh);
  756. opacity: 0;
  757. }
  758. }
  759. .nsfw {
  760. color: red;
  761. font-style: bold;
  762. }
  763. select {
  764. background: #111;
  765. color: #eee;
  766. border-color: #444;
  767. }
  768. select > option {
  769. color: #eee;
  770. }
  771. button:focus,
  772. select:focus,
  773. input:focus {
  774. outline-color: #eee;
  775. }
  776. input {
  777. background: #111;
  778. color: #eee;
  779. border-color: #444;
  780. }
  781. button {
  782. background: #111;
  783. color: #ddd;
  784. border-color: #666;
  785. }
  786. .settings-holder {
  787. display: flex;
  788. align-items: center;
  789. padding: 10px 0px 10px;
  790. border-color: #222;
  791. border-width: 5px;
  792. border-style: solid;
  793. max-width: 360pt;
  794. height: 60pt;
  795. }
  796. .settings-holder.enabled {
  797. background: green;
  798. border-color: darkgreen;
  799. }
  800. .settings-desc {
  801. text-align: right;
  802. margin-right: 8pt;
  803. user-select: none;
  804. flex: 1;
  805. }
  806. .settings-holder.disabled {
  807. background: gray;
  808. border-color: darkslategray;
  809. }
  810. .settings-name {
  811. font-size: 200%;
  812. margin-left: 8pt;
  813. user-select: none;
  814. max-width: 120pt;
  815. width: 120pt;
  816. }
  817. .settings-holder > select {
  818. height: 100%;
  819. background: darkgreen;
  820. font-size: 16pt;
  821. }
  822. .filter-button > i {
  823. color: gray;
  824. }
  825. .button-counter {
  826. position: absolute;
  827. color: white;
  828. opacity: 0.75;
  829. width: 25%;
  830. height: 25%;
  831. font-size: 16pt;
  832. top: 0%;
  833. left: 0%;
  834. z-index: 1;
  835. user-select: none;
  836. }
  837. body.screenshot-mode #menubar,
  838. body.screenshot-mode #options,
  839. body.screenshot-mode .scroll-button {
  840. display: none;
  841. }