styles.css 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360
  1. :root {
  2. --highlight: #ddd;
  3. --background: #222;
  4. --highlight-border: 1px solid var(--highlight);
  5. }
  6. body {
  7. font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu",
  8. "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
  9. color: var(--highlight);
  10. background-color: var(--background);
  11. accent-color: var(--highlight);
  12. transition: accent-color 250ms, color 250ms, background-color 250ms;
  13. }
  14. select:disabled {
  15. display: none;
  16. }
  17. .pkmn {
  18. margin: 0.25rem;
  19. padding: 0.25rem;
  20. display: grid;
  21. gap: 0.25rem;
  22. grid-template-columns: 48px 1fr 14ch;
  23. grid-template-rows: repeat(4, 1fr);
  24. grid-template-areas:
  25. "img name cls4"
  26. "img score cls3"
  27. "... total cls2"
  28. "... total cls1";
  29. align-items: center;
  30. border: var(--highlight-border);
  31. }
  32. .pkmn > img {
  33. grid-area: img;
  34. justify-self: center;
  35. }
  36. .pkmn > .pkmn-name {
  37. grid-area: name;
  38. font-weight: 800;
  39. overflow-x: hidden;
  40. text-overflow: ellipsis;
  41. white-space: nowrap;
  42. }
  43. .pkmn > .pkmn-total {
  44. border: var(--highlight-border);
  45. border-radius: 100vmax;
  46. grid-area: total;
  47. height: 100%;
  48. display: inline-flex;
  49. align-items: center;
  50. padding-inline-end: 1ch;
  51. }
  52. .pkmn > .pkmn-score {
  53. grid-area: score;
  54. padding-inline-start: 4ch;
  55. }
  56. .pkmn > .pkmn-cls {
  57. border: var(--highlight-border);
  58. border-radius: 100vmax;
  59. font-weight: 600;
  60. font-size: 0.75rem;
  61. padding: 0.125rem;
  62. padding-inline-end: 0.5ch;
  63. display: flex;
  64. justify-content: space-between;
  65. }
  66. .pkmn > :is(.pkmn-total, .pkmn-cls)::before {
  67. display: inline-block;
  68. content: "";
  69. font-size: 80%;
  70. width: 1ch;
  71. margin-inline: 0.25ch;
  72. }
  73. .pkmn-total-selected > .pkmn-total::before,
  74. .pkmn-cls1-selected > .pkmn-cls1::before,
  75. .pkmn-cls2-selected > .pkmn-cls2::before,
  76. .pkmn-cls3-selected > .pkmn-cls3::before,
  77. .pkmn-cls4-selected > .pkmn-cls4::before {
  78. content: "▸";
  79. }
  80. .pkmn > .pkmn-cls1 {
  81. grid-area: cls1;
  82. }
  83. .pkmn > .pkmn-cls2 {
  84. grid-area: cls2;
  85. }
  86. .pkmn > .pkmn-cls3 {
  87. grid-area: cls3;
  88. }
  89. .pkmn > .pkmn-cls4 {
  90. grid-area: cls4;
  91. }
  92. #color-results,
  93. #name-results {
  94. min-width: fit-content;
  95. max-width: 50vw;
  96. }
  97. .fn-part {
  98. display: inline-flex;
  99. width: 3ch;
  100. justify-content: center;
  101. align-items: flex-end;
  102. padding-block-end: 0.125rem;
  103. padding-inline: 0.375ch;
  104. margin-inline: 0.125ch;
  105. border: var(--highlight-border);
  106. border-radius: 100vmax;
  107. color: var(--background);
  108. background-color: var(--highlight);
  109. transition: opacity 250ms, color 250ms, background-color 250ms;
  110. cursor: pointer;
  111. user-select: none;
  112. }
  113. .fn-part--fixed {
  114. cursor: not-allowed;
  115. }
  116. /*
  117. pls hurry up mozilla
  118. .fn-part:not(:has(input:checked)),
  119. */
  120. .fn-part--disabled {
  121. color: var(--highlight);
  122. background-color: var(--background);
  123. opacity: 50%;
  124. }
  125. .fn-part > input {
  126. display: none;
  127. }
  128. .fn-part sup {
  129. font-size: 0.75rem;
  130. align-self: flex-start;
  131. }
  132. .fn-minmax {
  133. min-width: 3.5ch;
  134. text-align: center;
  135. padding-inline-end: 0.25ch;
  136. cursor: pointer;
  137. user-select: none;
  138. }
  139. .fn-minmax--wide {
  140. min-width: 6.5ch;
  141. }
  142. .fn-group {
  143. display: flex;
  144. align-items: center;
  145. }
  146. .fn-bracket {
  147. font-weight: 300;
  148. font-size: 2rem;
  149. align-self: flex-start;
  150. padding-block-end: 0.125rem;
  151. }
  152. .fn-minmax-toggle {
  153. display: flex;
  154. flex-direction: column;
  155. padding-block-end: 0.25rem;
  156. position: relative;
  157. }
  158. .fn-minmax-toggle::before {
  159. content: "";
  160. background-color: var(--highlight);
  161. border-radius: 100vmax;
  162. position: absolute;
  163. top: 5%;
  164. left: 0px;
  165. right: 0px;
  166. height: 45%;
  167. transition: top 250ms;
  168. z-index: -1;
  169. }
  170. input:checked + .fn-minmax-toggle::before {
  171. top: 50%;
  172. }
  173. .fn-minmax-toggle > span {
  174. opacity: 50%;
  175. transition: opacity 250ms, color 250ms;
  176. }
  177. input:not(:checked) + .fn-minmax-toggle > span:first-child {
  178. opacity: 100%;
  179. color: var(--background);
  180. }
  181. input:checked + .fn-minmax-toggle > span:last-child {
  182. opacity: 100%;
  183. color: var(--background);
  184. }
  185. .main-container {
  186. display: grid;
  187. margin-inline: 2ch;
  188. margin-block-end: 2rem;
  189. gap: 0.25rem;
  190. grid-template-columns: 1fr 1fr minmax(min-content, 12ch);
  191. grid-template-rows: 3rem min-content 1.5rem min-content min-content;
  192. grid-auto-rows: 1fr;
  193. grid-template-areas:
  194. "fun1 fun2 targ"
  195. "met1 met2 targ"
  196. "lbl1 lbl2 srch"
  197. "res1 res2 srch"
  198. "res1 res2 spac"
  199. "res1 res2 oldc";
  200. justify-content: space-between;
  201. justify-items: start;
  202. align-items: start;
  203. }
  204. #sortFunction {
  205. grid-area: fun1;
  206. justify-self: end;
  207. align-self: end;
  208. }
  209. .fade {
  210. opacity: 25%;
  211. }
  212. #clusterFunction {
  213. grid-area: fun2;
  214. align-self: end;
  215. transition: opacity 250ms;
  216. }
  217. #sortMetric {
  218. grid-area: met1;
  219. justify-self: end;
  220. }
  221. #clusterMetric {
  222. grid-area: met2;
  223. transition: opacity 250ms;
  224. }
  225. #colorSelect {
  226. grid-area: targ;
  227. justify-self: end;
  228. align-self: stretch;
  229. display: grid;
  230. grid-template-columns: 1fr;
  231. grid-auto-rows: 1fr;
  232. gap: 0.25rem;
  233. justify-items: stretch;
  234. align-items: stretch;
  235. border: var(--highlight-border);
  236. padding: 0.125rem;
  237. width: fit-content;
  238. }
  239. #colorSelect label {
  240. display: inline-flex;
  241. justify-content: center;
  242. align-items: center;
  243. }
  244. #colorSelect input {
  245. box-sizing: border-box;
  246. width: 100%;
  247. padding: 0;
  248. margin: 0;
  249. text-align: center;
  250. }
  251. #sortControl {
  252. justify-self: end;
  253. grid-area: spac;
  254. padding-block-start: 0.5rem;
  255. padding-inline: 1ch;
  256. }
  257. #color-results-label {
  258. grid-area: lbl1;
  259. }
  260. #name-results-label {
  261. grid-area: lbl2;
  262. }
  263. #color-results {
  264. grid-area: res1;
  265. width: 100%;
  266. }
  267. #name-results {
  268. grid-area: res2;
  269. width: 100%;
  270. }
  271. #name-search-container {
  272. grid-area: srch;
  273. justify-self: end;
  274. display: grid;
  275. grid-template-columns: 1fr;
  276. grid-auto-rows: 1fr;
  277. gap: 0.25rem;
  278. justify-items: stretch;
  279. align-items: stretch;
  280. border: var(--highlight-border);
  281. padding: 0.125rem;
  282. width: fit-content;
  283. text-align: center;
  284. }
  285. #name-search {
  286. box-sizing: border-box;
  287. width: 100%;
  288. padding: 0;
  289. margin: 0;
  290. text-align: center;
  291. }
  292. #prev-colors-container {
  293. padding-block-start: 1rem;
  294. grid-area: oldc;
  295. }
  296. .metric-select-fieldset {
  297. width: 24ch;
  298. display: grid;
  299. row-gap: 0.125rem;
  300. grid-template-columns: 1fr;
  301. grid-auto-rows: 1fr;
  302. }