App.scss 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328
  1. @font-face {
  2. font-family: "Roboto Regular";
  3. src: url("./assets/fonts/roboto_regular.ttf");
  4. font-display: swap;
  5. }
  6. @font-face {
  7. font-family: "Roboto Bold";
  8. src: url("./assets/fonts/roboto_bold.ttf");
  9. font-display: swap;
  10. }
  11. @font-face {
  12. font-family: "Roboto Condensed Regular";
  13. src: url("./assets/fonts/roboto_condensed_regular.ttf");
  14. font-display: swap;
  15. }
  16. ::-webkit-scrollbar {
  17. height: 5px;
  18. width: 5px;
  19. &-track {
  20. background: #333333;
  21. border-radius: 10px;
  22. }
  23. &-thumb {
  24. background: var(--accentColor);
  25. border-radius: 10px;
  26. }
  27. &-corner {
  28. background: none;
  29. }
  30. }
  31. input[type="range"] {
  32. -webkit-appearance: none;
  33. background: transparent;
  34. &:focus {
  35. outline: none;
  36. }
  37. &::-webkit-slider-thumb {
  38. height: 16px;
  39. width: 16px;
  40. -webkit-appearance: none;
  41. margin-top: -4px;
  42. border-radius: 10px;
  43. background: #eee;
  44. border: none;
  45. cursor: pointer;
  46. }
  47. &::-moz-range-thumb {
  48. border: none;
  49. height: 16px;
  50. width: 16px;
  51. border-radius: 10px;
  52. background: #eee;
  53. cursor: pointer;
  54. }
  55. &::-webkit-slider-runnable-track {
  56. border-radius: 10px;
  57. width: 100%;
  58. height: 8.4px;
  59. cursor: pointer;
  60. background: var(--accentColor);
  61. }
  62. &::-moz-range-track {
  63. width: 100%;
  64. height: 8.4px;
  65. cursor: pointer;
  66. background: var(--accentColor);
  67. border-radius: 10px;
  68. }
  69. }
  70. * {
  71. box-sizing: border-box;
  72. margin: 0;
  73. padding: 0;
  74. font-weight: normal;
  75. }
  76. html,
  77. body,
  78. #root {
  79. height: 100%;
  80. width: 100%;
  81. }
  82. body {
  83. -webkit-font-smoothing: antialiased;
  84. background: var(--primaryColor);
  85. scrollbar-color: var(--accentColor) #333333;
  86. scrollbar-width: thin;
  87. scroll-behavior: smooth;
  88. font-family: "Roboto Regular", Arial;
  89. transition: background 100ms ease-in-out;
  90. }
  91. /*
  92. * == DEFAULTS ==
  93. */
  94. a {
  95. text-decoration: none;
  96. color: var(--primaryTextColor);
  97. outline: none;
  98. }
  99. img {
  100. background: var(--secondaryColor);
  101. &:-moz-loading {
  102. visibility: hidden;
  103. }
  104. }
  105. svg {
  106. width: 1em;
  107. fill: #eee;
  108. overflow: unset;
  109. }
  110. /*
  111. used by layout skeletons, appears only if takes a while to load,
  112. else prevent flicker on load e.g. when loading in cached results
  113. */
  114. .showAfter100ms {
  115. opacity: 0;
  116. animation: appear 0.3s ease-in-out forwards;
  117. animation-delay: 100ms;
  118. }
  119. .horizontal-err {
  120. animation: appear 0.4s ease-in-out;
  121. align-items: center;
  122. display: grid;
  123. grid-template-columns: auto 1fr;
  124. gap: 5px;
  125. font-family: "Roboto Condensed Regular", Arial;
  126. background: var(--accentColor);
  127. border-radius: 10px;
  128. padding: 3px 5px;
  129. color: var(--primaryTextColor);
  130. white-space: nowrap;
  131. overflow: hidden;
  132. text-overflow: ellipsis;
  133. svg {
  134. animation: shake 0.5s ease-in-out;
  135. animation-delay: 0.5s;
  136. font-size: 0.8em;
  137. }
  138. }
  139. .vertical-err {
  140. display: flex;
  141. flex-direction: column;
  142. justify-content: center;
  143. align-items: center;
  144. animation: appear 0.4s ease-in-out;
  145. height: 100%;
  146. font-family: "Roboto Condensed Regular", Arial;
  147. text-align: center;
  148. svg {
  149. animation: shake 0.5s ease-in-out;
  150. margin-bottom: 15px;
  151. color: #f39c12;
  152. width: 1.5em !important;
  153. height: 1.5em !important;
  154. animation-delay: 0.5s;
  155. }
  156. p {
  157. color: #bfbfbf;
  158. }
  159. }
  160. button {
  161. outline: none;
  162. border: none;
  163. cursor: pointer;
  164. }
  165. input {
  166. font-family: "Roboto Regular", Arial;
  167. }
  168. .separator {
  169. margin: 0 auto;
  170. height: 2px;
  171. width: 100%;
  172. background: var(--quaternaryColor);
  173. border-radius: 2px;
  174. }
  175. .placeholder {
  176. animation: appear 0.5s ease-in-out;
  177. position: relative;
  178. height: 100%;
  179. background: var(--secondaryColor);
  180. border-radius: 10px;
  181. &-text {
  182. transition: width 0.3s ease-in-out;
  183. background: var(--secondaryColor);
  184. border-radius: 10px;
  185. height: 30px;
  186. width: 150px;
  187. }
  188. }
  189. .spinner {
  190. transform: translate(-50%, -50%);
  191. animation: appear 0.5s ease-in-out;
  192. position: absolute;
  193. top: 50%;
  194. left: 50%;
  195. height: 40px;
  196. width: 40px;
  197. max-height: 40px;
  198. max-width: 40px;
  199. &::after {
  200. animation: spinner 0.6s linear infinite;
  201. content: "";
  202. position: absolute;
  203. top: 0;
  204. left: 0;
  205. border-radius: 50%;
  206. height: 100%;
  207. width: 100%;
  208. border: solid 2px #3a3a3a;
  209. background: rgba(0, 0, 0, 0.2);
  210. border-top-color: var(--primaryTextColor);
  211. }
  212. }
  213. .popupOverlay {
  214. animation: appear 0.3s ease-in-out;
  215. background: #000000aa;
  216. position: fixed;
  217. top: 0;
  218. left: 0;
  219. right: 0;
  220. bottom: 0;
  221. z-index: 2;
  222. }
  223. main {
  224. position: relative;
  225. margin-left: 150px;
  226. color: var(--primaryTextColor);
  227. transition: margin-left 300ms ease-in-out;
  228. &.full {
  229. margin-left: 0;
  230. }
  231. &.shrunk {
  232. margin-left: 150px;
  233. }
  234. }
  235. /*
  236. * === KEYFRAMES ===
  237. */
  238. @keyframes spinner {
  239. from {
  240. transform: rotate(0deg);
  241. }
  242. to {
  243. transform: rotate(360deg);
  244. }
  245. }
  246. @keyframes appear {
  247. 0% {
  248. opacity: 0;
  249. }
  250. 100% {
  251. opacity: 1;
  252. }
  253. }
  254. @keyframes shake {
  255. 0% {
  256. transform: translateX(0);
  257. }
  258. 20% {
  259. transform: translateX(-10%);
  260. }
  261. 40% {
  262. transform: translateX(10%);
  263. }
  264. 60% {
  265. transform: translateX(-10%);
  266. }
  267. 80% {
  268. transform: translateX(10%);
  269. }
  270. 100% {
  271. transform: translateX(0);
  272. }
  273. }
  274. /*
  275. * == MEDIA QUERIES
  276. */
  277. @media only screen and (min-width: 1080px) {
  278. main {
  279. margin-left: 300px;
  280. &.shrunk {
  281. margin-left: 300px;
  282. }
  283. }
  284. }