globals.css 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. @tailwind base;
  2. @tailwind components;
  3. @tailwind utilities;
  4. @layer base {
  5. :root {
  6. /* Colores base usando COLOR_PALETTE */
  7. --background: 0 0% 100%; /* COLOR_PALETTE.white */
  8. --foreground: 215 25% 27%; /* COLOR_PALETTE.gray[700] */
  9. --card: 0 0% 100%; /* COLOR_PALETTE.white */
  10. --card-foreground: 215 25% 27%; /* COLOR_PALETTE.gray[700] */
  11. --popover: 0 0% 100%; /* COLOR_PALETTE.white */
  12. --popover-foreground: 215 25% 27%; /* COLOR_PALETTE.gray[700] */
  13. /* Colores primarios - azul de COLOR_PALETTE.primary */
  14. --primary: 217 91% 60%; /* COLOR_PALETTE.primary[500] */
  15. --primary-foreground: 0 0% 100%; /* COLOR_PALETTE.white */
  16. /* Colores secundarios - púrpura de COLOR_PALETTE.secondary */
  17. --secondary: 262 83% 58%; /* COLOR_PALETTE.secondary[500] */
  18. --secondary-foreground: 0 0% 100%; /* COLOR_PALETTE.white */
  19. /* Colores neutros */
  20. --muted: 220 14% 96%; /* COLOR_PALETTE.gray[100] */
  21. --muted-foreground: 215 16% 47%; /* COLOR_PALETTE.gray[500] */
  22. --accent: 220 14% 96%; /* COLOR_PALETTE.gray[100] */
  23. --accent-foreground: 215 25% 27%; /* COLOR_PALETTE.gray[700] */
  24. /* Colores de estado - error de COLOR_PALETTE.error */
  25. --destructive: 0 84% 60%; /* COLOR_PALETTE.error[500] */
  26. --destructive-foreground: 0 0% 100%; /* COLOR_PALETTE.white */
  27. /* Colores de éxito - success de COLOR_PALETTE.success */
  28. --success: 142 71% 45%; /* COLOR_PALETTE.success[500] */
  29. --success-foreground: 0 0% 100%; /* COLOR_PALETTE.white */
  30. /* Colores de advertencia - warning de COLOR_PALETTE.warning */
  31. --warning: 38 92% 50%; /* COLOR_PALETTE.warning[500] */
  32. --warning-foreground: 0 0% 100%; /* COLOR_PALETTE.white */
  33. /* Bordes y inputs */
  34. --border: 220 13% 91%; /* COLOR_PALETTE.gray[200] */
  35. --input: 220 13% 91%; /* COLOR_PALETTE.gray[200] */
  36. --ring: 217 91% 60%; /* COLOR_PALETTE.primary[500] */
  37. --radius: 0.5rem;
  38. }
  39. .dark {
  40. /* Colores base para tema oscuro usando COLOR_PALETTE */
  41. --background: 215 28% 17%; /* COLOR_PALETTE.gray[800] */
  42. --foreground: 210 20% 98%; /* COLOR_PALETTE.gray[50] */
  43. --card: 215 28% 17%; /* COLOR_PALETTE.gray[800] */
  44. --card-foreground: 210 20% 98%; /* COLOR_PALETTE.gray[50] */
  45. --popover: 215 28% 17%; /* COLOR_PALETTE.gray[800] */
  46. --popover-foreground: 210 20% 98%; /* COLOR_PALETTE.gray[50] */
  47. /* Colores primarios para tema oscuro */
  48. --primary: 217 91% 60%; /* COLOR_PALETTE.primary[500] */
  49. --primary-foreground: 0 0% 100%; /* COLOR_PALETTE.white */
  50. /* Colores secundarios para tema oscuro */
  51. --secondary: 215 25% 27%; /* COLOR_PALETTE.gray[700] */
  52. --secondary-foreground: 210 20% 98%; /* COLOR_PALETTE.gray[50] */
  53. /* Colores neutros para tema oscuro */
  54. --muted: 215 25% 27%; /* COLOR_PALETTE.gray[700] */
  55. --muted-foreground: 215 16% 47%; /* COLOR_PALETTE.gray[500] */
  56. --accent: 215 25% 27%; /* COLOR_PALETTE.gray[700] */
  57. --accent-foreground: 210 20% 98%; /* COLOR_PALETTE.gray[50] */
  58. /* Colores de estado para tema oscuro */
  59. --destructive: 0 84% 60%; /* COLOR_PALETTE.error[500] */
  60. --destructive-foreground: 210 20% 98%; /* COLOR_PALETTE.gray[50] */
  61. /* Colores de éxito para tema oscuro */
  62. --success: 142 71% 45%; /* COLOR_PALETTE.success[500] */
  63. --success-foreground: 210 20% 98%; /* COLOR_PALETTE.gray[50] */
  64. /* Colores de advertencia para tema oscuro */
  65. --warning: 38 92% 50%; /* COLOR_PALETTE.warning[500] */
  66. --warning-foreground: 210 20% 98%; /* COLOR_PALETTE.gray[50] */
  67. /* Bordes y inputs para tema oscuro */
  68. --border: 215 25% 27%; /* COLOR_PALETTE.gray[700] */
  69. --input: 215 25% 27%; /* COLOR_PALETTE.gray[700] */
  70. --ring: 217 91% 60%; /* COLOR_PALETTE.primary[500] */
  71. }
  72. }
  73. @layer base {
  74. * {
  75. @apply border-border;
  76. }
  77. body {
  78. @apply bg-background text-foreground;
  79. }
  80. }
  81. @layer utilities {
  82. .animate-fade-in {
  83. animation: fadeIn 0.6s ease-out;
  84. }
  85. .animate-slide-in {
  86. animation: slideIn 0.5s ease-out;
  87. }
  88. .animate-scale-in {
  89. animation: scaleIn 0.4s ease-out;
  90. }
  91. @keyframes fadeIn {
  92. from {
  93. opacity: 0;
  94. transform: translateY(8px);
  95. }
  96. to {
  97. opacity: 1;
  98. transform: translateY(0);
  99. }
  100. }
  101. @keyframes slideIn {
  102. from {
  103. opacity: 0;
  104. transform: translateX(-10px);
  105. }
  106. to {
  107. opacity: 1;
  108. transform: translateX(0);
  109. }
  110. }
  111. @keyframes scaleIn {
  112. from {
  113. opacity: 0;
  114. transform: scale(0.95);
  115. }
  116. to {
  117. opacity: 1;
  118. transform: scale(1);
  119. }
  120. }
  121. /* Animación para el chat preview */
  122. .chat-message-enter {
  123. animation: messageEnter 0.4s ease-out;
  124. }
  125. @keyframes messageEnter {
  126. from {
  127. opacity: 0;
  128. transform: translateY(10px) scale(0.95);
  129. }
  130. to {
  131. opacity: 1;
  132. transform: translateY(0) scale(1);
  133. }
  134. }
  135. /* Transición suave para el reset del chat */
  136. .chat-reset {
  137. transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
  138. }
  139. .chat-reset.resetting {
  140. opacity: 0.2;
  141. transform: scale(0.98);
  142. }
  143. .chat-reset.normal {
  144. opacity: 1;
  145. transform: scale(1);
  146. }
  147. /* Estilos para Sonner Toast */
  148. .toaster {
  149. --width: 356px;
  150. --front-toast-height: 64px;
  151. --offset: 16px;
  152. --gap: 8px;
  153. --z-index: 9999;
  154. }
  155. .toast {
  156. @apply backdrop-blur-sm;
  157. transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  158. animation: toast-slide-in 0.3s ease-out;
  159. }
  160. .toast:hover {
  161. transform: scale(1.02);
  162. box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
  163. }
  164. @keyframes toast-slide-in {
  165. from {
  166. opacity: 0;
  167. transform: translateX(100%) scale(0.95);
  168. }
  169. to {
  170. opacity: 1;
  171. transform: translateX(0) scale(1);
  172. }
  173. }
  174. /* Estilos específicos para diferentes tipos de toast */
  175. [data-sonner-toast][data-type="success"] {
  176. border-left: 4px solid hsl(142, 76%, 36%);
  177. background: hsl(142, 76%, 97%) !important;
  178. }
  179. [data-sonner-toast][data-type="error"] {
  180. border-left: 4px solid hsl(0, 84%, 60%);
  181. background: hsl(0, 84%, 97%) !important;
  182. }
  183. [data-sonner-toast][data-type="warning"] {
  184. border-left: 4px solid hsl(38, 92%, 50%);
  185. background: hsl(38, 92%, 97%) !important;
  186. }
  187. [data-sonner-toast][data-type="info"] {
  188. border-left: 4px solid hsl(217, 91%, 60%);
  189. background: hsl(217, 91%, 97%) !important;
  190. }
  191. /* Botón de cerrar personalizado */
  192. [data-sonner-toast] [data-close-button] {
  193. @apply opacity-60 hover:opacity-100 transition-opacity duration-200;
  194. }
  195. }