less copy protection, more size visualization
25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

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