index.styl 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. // app/shared/EventDetailModal/index.styl
  2. .event-detail
  3. .event-stats
  4. .stat
  5. transition: all 0.3s ease
  6. border: 1px solid transparent
  7. &:hover
  8. border-color: #d69e2e
  9. transform: translateY(-2px)
  10. box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1)
  11. .stat-value
  12. transition: color 0.3s ease
  13. .stat-label
  14. transition: color 0.3s ease
  15. .info-item
  16. transition: all 0.3s ease
  17. padding: 0.5rem
  18. border-radius: 0.5rem
  19. &:hover
  20. background-color: rgba(0, 0, 0, 0.02)
  21. .dark &
  22. background-color: rgba(255, 255, 255, 0.02)
  23. .icon
  24. transition: transform 0.3s ease
  25. &:hover .icon
  26. transform: scale(1.1)
  27. .action-buttons
  28. button
  29. transition: all 0.3s ease
  30. position: relative
  31. overflow: hidden
  32. &::before
  33. content: ''
  34. position: absolute
  35. top: 50%
  36. left: 50%
  37. width: 0
  38. height: 0
  39. background: rgba(255, 255, 255, 0.2)
  40. border-radius: 50%
  41. transform: translate(-50%, -50%)
  42. transition: width 0.6s, height 0.6s
  43. &:hover::before
  44. width: 300px
  45. height: 300px
  46. &:active
  47. transform: scale(0.98)
  48. .social-share
  49. button
  50. transition: all 0.3s ease
  51. position: relative
  52. overflow: hidden
  53. &::after
  54. content: ''
  55. position: absolute
  56. top: 0
  57. left: -100%
  58. width: 100%
  59. height: 100%
  60. background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.4), transparent)
  61. transition: left 0.5s
  62. &:hover::after
  63. left: 100%
  64. // Анимации для модального контента
  65. .modal-content
  66. .event-visual
  67. img
  68. transition: transform 0.5s ease
  69. &:hover img
  70. transform: scale(1.02)
  71. // Кастомные стили для категорий
  72. .category-badge
  73. &.classical
  74. background: linear-gradient(135deg, #3b82f6, #1d4ed8)
  75. &.folk
  76. background: linear-gradient(135deg, #10b981, #047857)
  77. &.jazz
  78. background: linear-gradient(135deg, #8b5cf6, #7c3aed)
  79. &.pop
  80. background: linear-gradient(135deg, #ec4899, #db2777)
  81. &.dance
  82. background: linear-gradient(135deg, #f59e0b, #d97706)
  83. &.experimental
  84. background: linear-gradient(135deg, #6366f1, #4f46e5)
  85. &.theater
  86. background: linear-gradient(135deg, #ef4444, #dc2626)
  87. &.opera
  88. background: linear-gradient(135deg, #14b8a6, #0d9488)
  89. // Адаптивность
  90. @media (max-width: 1024px)
  91. .event-detail
  92. .grid
  93. grid-template-columns: 1fr !important
  94. .event-stats
  95. grid-template-columns: repeat(3, 1fr)
  96. .action-buttons
  97. flex-direction: column
  98. @media (max-width: 640px)
  99. .event-detail
  100. .event-stats
  101. grid-template-columns: 1fr
  102. gap: 0.5rem
  103. .info-item
  104. flex-direction: column
  105. align-items: flex-start
  106. .icon
  107. margin-bottom: 0.5rem
  108. margin-right: 0
  109. // Анимация появления статистики
  110. @keyframes statAppear
  111. 0%
  112. opacity: 0
  113. transform: translateY(20px)
  114. 100%
  115. opacity: 1
  116. transform: translateY(0)
  117. .event-stats .stat
  118. animation: statAppear 0.6s ease forwards
  119. &:nth-child(1)
  120. animation-delay: 0.1s
  121. &:nth-child(2)
  122. animation-delay: 0.2s
  123. &:nth-child(3)
  124. animation-delay: 0.3s
  125. // Стили для состояния "мало билетов"
  126. .low-availability
  127. .stat-value
  128. animation: pulse 2s infinite
  129. @keyframes pulse
  130. 0%, 100%
  131. opacity: 1
  132. 50%
  133. opacity: 0.7
  134. // Стили для иконок
  135. .icon
  136. svg
  137. transition: all 0.3s ease
  138. &:hover svg
  139. filter: drop-shadow(0 2px 4px rgba(214, 158, 46, 0.3))
  140. // Темная тема улучшения
  141. .dark
  142. .event-detail
  143. .info-item:hover
  144. background-color: rgba(255, 255, 255, 0.05)
  145. .stat
  146. background: linear-gradient(135deg, rgba(55, 65, 81, 0.8), rgba(31, 41, 55, 0.8))
  147. border: 1px solid rgba(75, 85, 99, 0.5)
  148. &:hover
  149. border-color: #d69e2e
  150. background: linear-gradient(135deg, rgba(55, 65, 81, 1), rgba(31, 41, 55, 1))
  151. // Плавные переходы для всего контента
  152. .event-detail > *
  153. transition: all 0.3s ease
  154. // Кастомный скроллбар для модального окна
  155. .modal-content
  156. &::-webkit-scrollbar
  157. width: 6px
  158. &::-webkit-scrollbar-track
  159. background: rgba(0, 0, 0, 0.1)
  160. border-radius: 3px
  161. .dark &
  162. background: rgba(255, 255, 255, 0.1)
  163. &::-webkit-scrollbar-thumb
  164. background: #d69e2e
  165. border-radius: 3px
  166. &:hover
  167. background: #b8860b