tailwind-input.css 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. @tailwind base;
  2. @tailwind components;
  3. @tailwind utilities;
  4. /* Custom styles from base.html */
  5. .material-icons {
  6. font-family: "Material Icons";
  7. font-weight: normal;
  8. font-style: normal;
  9. font-size: 24px;
  10. display: inline-block;
  11. line-height: 1;
  12. text-transform: none;
  13. letter-spacing: normal;
  14. word-wrap: normal;
  15. white-space: nowrap;
  16. direction: ltr;
  17. -webkit-font-smoothing: antialiased;
  18. text-rendering: optimizeLegibility;
  19. -moz-osx-font-smoothing: grayscale;
  20. font-feature-settings: "liga";
  21. }
  22. /* Dark mode styles */
  23. .dark {
  24. color-scheme: dark;
  25. }
  26. .dark body {
  27. background-color: #1a1a1a;
  28. color: #e5e5e5;
  29. }
  30. .dark header {
  31. background-color: #262626;
  32. border-color: #404040;
  33. }
  34. .dark footer {
  35. background-color: #262626;
  36. border-color: #404040;
  37. }
  38. .dark .inactive-tab {
  39. color: #9ca3af;
  40. }
  41. .dark .inactive-tab:hover {
  42. color: #d1d5db;
  43. }
  44. .dark #player-status-bar-container {
  45. background-color: #262626;
  46. color: #e5e5e5;
  47. }
  48. .dark .bg-gray-100 {
  49. background-color: #262626;
  50. }
  51. .dark .bg-gray-200 {
  52. background-color: #404040;
  53. }
  54. .dark .bg-gray-300 {
  55. background-color: #525252;
  56. }
  57. .dark .text-gray-500 {
  58. color: #9ca3af;
  59. }
  60. .dark .text-gray-700 {
  61. color: #d1d5db;
  62. }
  63. .dark .text-gray-800 {
  64. color: #e5e5e5;
  65. }
  66. .dark .border-gray-200 {
  67. border-color: #404040;
  68. }
  69. .dark .hover\:bg-gray-200:hover {
  70. background-color: #404040;
  71. }
  72. .dark .hover\:bg-gray-300:hover {
  73. background-color: #525252;
  74. }
  75. .dark .hover\:border-gray-300:hover {
  76. border-color: #525252;
  77. }
  78. .dark .hover\:bg-gray-50:hover {
  79. background-color: #262626;
  80. }
  81. .dark .bg-white {
  82. background-color: #262626;
  83. }
  84. .dark .bg-gray-50 {
  85. background-color: #1a1a1a;
  86. }
  87. .dark .text-gray-900 {
  88. color: #e5e5e5;
  89. }
  90. .dark .text-gray-400 {
  91. color: #9ca3af;
  92. }
  93. .dark .border-gray-300 {
  94. border-color: #404040;
  95. }
  96. .dark .focus\:ring-offset-2 {
  97. --tw-ring-offset-color: #262626;
  98. }
  99. .dark .shadow-sm {
  100. box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.3);
  101. }
  102. .dark .shadow-lg {
  103. box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.3), 0 4px 6px -2px rgba(0, 0, 0, 0.2);
  104. }
  105. .dark .shadow-xl {
  106. box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.3), 0 10px 10px -5px rgba(0, 0, 0, 0.2);
  107. }
  108. /* Tab styles */
  109. @layer components {
  110. .active-tab {
  111. @apply text-blue-600 border-blue-600;
  112. }
  113. .active-tab .material-icons {
  114. @apply text-blue-600;
  115. }
  116. .inactive-tab {
  117. @apply text-gray-500;
  118. }
  119. .inactive-tab:hover {
  120. @apply text-gray-700;
  121. }
  122. .btn {
  123. @apply px-4 py-2 rounded-lg font-medium transition-colors duration-150;
  124. }
  125. .btn-primary {
  126. @apply bg-blue-600 text-white hover:bg-blue-700;
  127. }
  128. .btn-secondary {
  129. @apply bg-gray-200 text-gray-700 hover:bg-gray-300;
  130. }
  131. .form-input {
  132. @apply block w-full rounded-lg border-gray-300 shadow-sm focus:border-blue-500 focus:ring-1 focus:ring-blue-500;
  133. }
  134. }
  135. /* Status message transition */
  136. #status-message {
  137. transition: opacity 0.5s ease-in-out, transform 0.5s ease-in-out;
  138. }
  139. /* Switch toggle styles */
  140. .switch {
  141. position: relative;
  142. display: inline-block;
  143. width: 40px;
  144. height: 20px;
  145. }
  146. .switch input {
  147. opacity: 0;
  148. width: 0;
  149. height: 0;
  150. }
  151. .slider {
  152. position: absolute;
  153. cursor: pointer;
  154. top: 0;
  155. left: 0;
  156. right: 0;
  157. bottom: 0;
  158. background-color: #ccc;
  159. transition: .4s;
  160. border-radius: 20px;
  161. }
  162. .slider:before {
  163. position: absolute;
  164. content: "";
  165. height: 16px;
  166. width: 16px;
  167. left: 2px;
  168. bottom: 2px;
  169. background-color: white;
  170. transition: .4s;
  171. border-radius: 50%;
  172. }
  173. input:checked + .slider {
  174. background-color: #0c7ff2;
  175. }
  176. input:checked + .slider:before {
  177. transform: translateX(20px);
  178. }
  179. /* Shadow for top of status bar */
  180. .shadow-lg-top {
  181. box-shadow: 0 -4px 6px -1px rgb(0 0 0 / 0.1), 0 -2px 4px -2px rgb(0 0 0 / 0.1);
  182. }
  183. /* Marquee animation for pattern name on small screens */
  184. @keyframes marquee {
  185. 0% { transform: translateX(0%); }
  186. 50% { transform: translateX(-50%); }
  187. }
  188. .pattern-marquee {
  189. display: inline-block;
  190. min-width: 100%;
  191. animation: marquee 8s linear infinite;
  192. }
  193. @media (min-width: 640px) { /* sm: and up, disable marquee */
  194. .pattern-marquee {
  195. animation: none !important;
  196. transform: none !important;
  197. }
  198. }