styles.css 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  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. }
  13. select:disabled {
  14. display: none;
  15. }
  16. .pkmn {
  17. margin: 0.25rem;
  18. padding: 0.25rem;
  19. display: grid;
  20. gap: 0.25rem;
  21. grid-template-columns: 64px 1fr 14ch;
  22. grid-template-rows: repeat(4, 1fr);
  23. grid-template-areas:
  24. "img name cls4"
  25. "img score cls3"
  26. "... total cls2"
  27. "... total cls1";
  28. align-items: center;
  29. border: var(--highlight-border);
  30. }
  31. .pkmn > img {
  32. grid-area: img;
  33. justify-self: center;
  34. }
  35. .pkmn > .pkmn-name {
  36. grid-area: name;
  37. font-weight: 800;
  38. }
  39. .pkmn > .pkmn-total {
  40. border: var(--highlight-border);
  41. border-radius: 100vmax;
  42. grid-area: total;
  43. height: 100%;
  44. display: inline-flex;
  45. align-items: center;
  46. padding-inline-end: 1ch;
  47. }
  48. .pkmn > .pkmn-score {
  49. grid-area: score;
  50. padding-inline-start: 4ch;
  51. }
  52. .pkmn > .pkmn-cls {
  53. border: var(--highlight-border);
  54. border-radius: 100vmax;
  55. font-weight: 600;
  56. font-size: 0.75rem;
  57. padding: 0.125rem;
  58. padding-inline-end: 0.5ch;
  59. display: flex;
  60. justify-content: space-between;
  61. }
  62. .pkmn > :is(.pkmn-total, .pkmn-cls)::before {
  63. display: inline-block;
  64. content: "";
  65. width: 1ch;
  66. margin-inline: 0.25ch;
  67. margin-block-end: 0.125rem;
  68. }
  69. .pkmn-total-selected > .pkmn-total::before,
  70. .pkmn-cls1-selected > .pkmn-cls1::before,
  71. .pkmn-cls2-selected > .pkmn-cls2::before,
  72. .pkmn-cls3-selected > .pkmn-cls3::before,
  73. .pkmn-cls4-selected > .pkmn-cls4::before {
  74. content: "▸";
  75. }
  76. .pkmn > .pkmn-cls1 {
  77. grid-area: cls1;
  78. }
  79. .pkmn > .pkmn-cls2 {
  80. grid-area: cls2;
  81. }
  82. .pkmn > .pkmn-cls3 {
  83. grid-area: cls3;
  84. }
  85. .pkmn > .pkmn-cls4 {
  86. grid-area: cls4;
  87. }
  88. #color-results,
  89. #name-results {
  90. min-width: fit-content;
  91. max-width: 50vw;
  92. }
  93. .fn-part {
  94. display: inline-flex;
  95. width: 3ch;
  96. justify-content: center;
  97. align-items: flex-end;
  98. padding-block-end: 0.125rem;
  99. padding-inline: 0.375ch;
  100. margin-inline: 0.125ch;
  101. border: var(--highlight-border);
  102. border-radius: 100vmax;
  103. color: var(--background);
  104. background-color: var(--highlight);
  105. transition: opacity 250ms, color 250ms, background-color 250ms;
  106. cursor: pointer;
  107. user-select: none;
  108. }
  109. .fn-part--fixed {
  110. cursor: not-allowed;
  111. }
  112. /*
  113. pls hurry up mozilla
  114. .fn-part:not(:has(input:checked)),
  115. */
  116. .fn-part--disabled {
  117. color: var(--highlight);
  118. background-color: var(--background);
  119. opacity: 50%;
  120. }
  121. .fn-part > input {
  122. display: none;
  123. }
  124. .fn-part sup {
  125. font-size: 0.75rem;
  126. align-self: flex-start;
  127. }
  128. .fn-minmax {
  129. min-width: 3.5ch;
  130. text-align: center;
  131. padding-inline-end: 0.25ch;
  132. cursor: pointer;
  133. user-select: none;
  134. }
  135. .fn-minmax--wide {
  136. min-width: 6.5ch;
  137. }
  138. .fn-group {
  139. display: flex;
  140. align-items: center;
  141. }
  142. .fn-bracket {
  143. font-weight: 300;
  144. font-size: 2rem;
  145. align-self: flex-start;
  146. padding-block-end: 0.125rem;
  147. }
  148. .fn-minmax-toggle {
  149. display: flex;
  150. flex-direction: column;
  151. padding-block-end: 0.25rem;
  152. position: relative;
  153. }
  154. .fn-minmax-toggle::before {
  155. content: "";
  156. background-color: var(--highlight);
  157. border-radius: 100vmax;
  158. position: absolute;
  159. top: 5%;
  160. left: 0px;
  161. right: 0px;
  162. height: 45%;
  163. transition: top 250ms;
  164. z-index: -1;
  165. }
  166. input:checked + .fn-minmax-toggle::before {
  167. top: 50%;
  168. }
  169. .fn-minmax-toggle > span {
  170. opacity: 50%;
  171. transition: opacity 250ms, color 250ms;
  172. }
  173. input:not(:checked) + .fn-minmax-toggle > span:first-child {
  174. opacity: 100%;
  175. color: var(--background);
  176. }
  177. input:checked + .fn-minmax-toggle > span:last-child {
  178. opacity: 100%;
  179. color: var(--background);
  180. }
  181. #colorSelect {
  182. display: grid;
  183. grid-template-columns: repeat(2, minmax(min-content, 12ch));
  184. grid-auto-rows: 1fr;
  185. gap: 0.25rem;
  186. justify-items: stretch;
  187. align-items: stretch;
  188. border: var(--highlight-border);
  189. padding: 0.125rem;
  190. width: fit-content;
  191. }
  192. #colorSelect label {
  193. display: inline-flex;
  194. justify-content: center;
  195. align-items: center;
  196. }
  197. #colorSelect input {
  198. box-sizing: border-box;
  199. width: 100%;
  200. padding: 0;
  201. margin: 0;
  202. text-align: center;
  203. }