|
@@ -1,4 +1,7 @@
|
|
|
|
|
+// =============================================
|
|
|
// Переменные цветов
|
|
// Переменные цветов
|
|
|
|
|
+// =============================================
|
|
|
|
|
+
|
|
|
$primary-50 = #fef2f2
|
|
$primary-50 = #fef2f2
|
|
|
$primary-100 = #fee2e2
|
|
$primary-100 = #fee2e2
|
|
|
$primary-200 = #fecaca
|
|
$primary-200 = #fecaca
|
|
@@ -35,73 +38,10 @@ $gray-900 = #111827
|
|
|
$white = #ffffff
|
|
$white = #ffffff
|
|
|
$black = #000000
|
|
$black = #000000
|
|
|
|
|
|
|
|
-// Типографика
|
|
|
|
|
-$font-family-sans = 'Inter', 'SF Pro Display', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif
|
|
|
|
|
-$font-family-serif = 'Georgia', 'Times New Roman', serif
|
|
|
|
|
-$font-family-mono = 'SF Mono', 'Fira Code', 'Consolas', 'Liberation Mono', monospace
|
|
|
|
|
-
|
|
|
|
|
-$font-size-xs = 0.75rem // 12px
|
|
|
|
|
-$font-size-sm = 0.875rem // 14px
|
|
|
|
|
-$font-size-base = 1rem // 16px
|
|
|
|
|
-$font-size-lg = 1.125rem // 18px
|
|
|
|
|
-$font-size-xl = 1.25rem // 20px
|
|
|
|
|
-$font-size-2xl = 1.5rem // 24px
|
|
|
|
|
-$font-size-3xl = 1.875rem // 30px
|
|
|
|
|
-$font-size-4xl = 2.25rem // 36px
|
|
|
|
|
-$font-size-5xl = 3rem // 48px
|
|
|
|
|
-
|
|
|
|
|
-$font-weight-light = 300
|
|
|
|
|
-$font-weight-normal = 400
|
|
|
|
|
-$font-weight-medium = 500
|
|
|
|
|
-$font-weight-semibold = 600
|
|
|
|
|
-$font-weight-bold = 700
|
|
|
|
|
-$font-weight-extrabold = 800
|
|
|
|
|
-
|
|
|
|
|
-$line-height-tight = 1.25
|
|
|
|
|
-$line-height-normal = 1.5
|
|
|
|
|
-$line-height-relaxed = 1.75
|
|
|
|
|
-
|
|
|
|
|
-$letter-spacing-tight = -0.025em
|
|
|
|
|
-$letter-spacing-normal = 0
|
|
|
|
|
-$letter-spacing-wide = 0.025em
|
|
|
|
|
-
|
|
|
|
|
-// Макеты и отступы
|
|
|
|
|
-$spacing-1 = 0.25rem // 4px
|
|
|
|
|
-$spacing-2 = 0.5rem // 8px
|
|
|
|
|
-$spacing-3 = 0.75rem // 12px
|
|
|
|
|
-$spacing-4 = 1rem // 16px
|
|
|
|
|
-$spacing-5 = 1.25rem // 20px
|
|
|
|
|
-$spacing-6 = 1.5rem // 24px
|
|
|
|
|
-$spacing-8 = 2rem // 32px
|
|
|
|
|
-$spacing-10 = 2.5rem // 40px
|
|
|
|
|
-$spacing-12 = 3rem // 48px
|
|
|
|
|
-$spacing-16 = 4rem // 64px
|
|
|
|
|
-$spacing-20 = 5rem // 80px
|
|
|
|
|
-
|
|
|
|
|
-// Брейкпоинты
|
|
|
|
|
-$breakpoint-sm = 640px
|
|
|
|
|
-$breakpoint-md = 768px
|
|
|
|
|
-$breakpoint-lg = 1024px
|
|
|
|
|
-$breakpoint-xl = 1280px
|
|
|
|
|
-$breakpoint-2xl = 1536px
|
|
|
|
|
-
|
|
|
|
|
-// Тени
|
|
|
|
|
-$shadow-sm = 0 1px 2px 0 rgba(0, 0, 0, 0.05)
|
|
|
|
|
-$shadow-base = 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)
|
|
|
|
|
-$shadow-md = 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)
|
|
|
|
|
-$shadow-lg = 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)
|
|
|
|
|
-$shadow-xl = 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)
|
|
|
|
|
-
|
|
|
|
|
-// Скругления
|
|
|
|
|
-$radius-sm = 0.125rem
|
|
|
|
|
-$radius-base = 0.25rem
|
|
|
|
|
-$radius-md = 0.375rem
|
|
|
|
|
-$radius-lg = 0.5rem
|
|
|
|
|
-$radius-xl = 0.75rem
|
|
|
|
|
-$radius-2xl = 1rem
|
|
|
|
|
-$radius-full = 9999px
|
|
|
|
|
-
|
|
|
|
|
|
|
+// =============================================
|
|
|
// Миксины
|
|
// Миксины
|
|
|
|
|
+// =============================================
|
|
|
|
|
+
|
|
|
flex-center()
|
|
flex-center()
|
|
|
display: flex
|
|
display: flex
|
|
|
align-items: center
|
|
align-items: center
|
|
@@ -112,217 +52,94 @@ flex-between()
|
|
|
align-items: center
|
|
align-items: center
|
|
|
justify-content: space-between
|
|
justify-content: space-between
|
|
|
|
|
|
|
|
-flex-col()
|
|
|
|
|
- display: flex
|
|
|
|
|
- flex-direction: column
|
|
|
|
|
-
|
|
|
|
|
-container()
|
|
|
|
|
- max-width: 1200px
|
|
|
|
|
- margin: 0 auto
|
|
|
|
|
- padding: 0 $spacing-4
|
|
|
|
|
-
|
|
|
|
|
transition-all($duration = 0.3s)
|
|
transition-all($duration = 0.3s)
|
|
|
transition: all $duration ease-in-out
|
|
transition: all $duration ease-in-out
|
|
|
|
|
|
|
|
-text-ellipsis()
|
|
|
|
|
- overflow: hidden
|
|
|
|
|
- text-overflow: ellipsis
|
|
|
|
|
- white-space: nowrap
|
|
|
|
|
-
|
|
|
|
|
-// Базовые сбросы
|
|
|
|
|
-*
|
|
|
|
|
- margin: 0
|
|
|
|
|
- padding: 0
|
|
|
|
|
- box-sizing: border-box
|
|
|
|
|
-
|
|
|
|
|
-html
|
|
|
|
|
- font-size: 16px
|
|
|
|
|
- line-height: $line-height-normal
|
|
|
|
|
- -webkit-text-size-adjust: 100%
|
|
|
|
|
- scroll-behavior: smooth
|
|
|
|
|
-
|
|
|
|
|
-body
|
|
|
|
|
- font-family: $font-family-sans
|
|
|
|
|
- font-size: $font-size-base
|
|
|
|
|
- font-weight: $font-weight-normal
|
|
|
|
|
- line-height: $line-height-normal
|
|
|
|
|
- color: $gray-900
|
|
|
|
|
- background-color: $white
|
|
|
|
|
- -webkit-font-smoothing: antialiased
|
|
|
|
|
- -moz-osx-font-smoothing: grayscale
|
|
|
|
|
-
|
|
|
|
|
- .dark &
|
|
|
|
|
- color: $white
|
|
|
|
|
- background-color: $gray-900
|
|
|
|
|
-
|
|
|
|
|
-// Типографические классы
|
|
|
|
|
-.text-xs
|
|
|
|
|
- font-size: $font-size-xs
|
|
|
|
|
- line-height: $line-height-tight
|
|
|
|
|
-
|
|
|
|
|
-.text-sm
|
|
|
|
|
- font-size: $font-size-sm
|
|
|
|
|
- line-height: $line-height-tight
|
|
|
|
|
-
|
|
|
|
|
-.text-base
|
|
|
|
|
- font-size: $font-size-base
|
|
|
|
|
- line-height: $line-height-normal
|
|
|
|
|
-
|
|
|
|
|
-.text-lg
|
|
|
|
|
- font-size: $font-size-lg
|
|
|
|
|
- line-height: $line-height-normal
|
|
|
|
|
-
|
|
|
|
|
-.text-xl
|
|
|
|
|
- font-size: $font-size-xl
|
|
|
|
|
- line-height: $line-height-normal
|
|
|
|
|
-
|
|
|
|
|
-.text-2xl
|
|
|
|
|
- font-size: $font-size-2xl
|
|
|
|
|
- line-height: $line-height-tight
|
|
|
|
|
-
|
|
|
|
|
-.text-3xl
|
|
|
|
|
- font-size: $font-size-3xl
|
|
|
|
|
- line-height: $line-height-tight
|
|
|
|
|
-
|
|
|
|
|
-.text-4xl
|
|
|
|
|
- font-size: $font-size-4xl
|
|
|
|
|
- line-height: $line-height-tight
|
|
|
|
|
-
|
|
|
|
|
-.text-5xl
|
|
|
|
|
- font-size: $font-size-5xl
|
|
|
|
|
- line-height: 1
|
|
|
|
|
-
|
|
|
|
|
-.font-light
|
|
|
|
|
- font-weight: $font-weight-light
|
|
|
|
|
-
|
|
|
|
|
-.font-normal
|
|
|
|
|
- font-weight: $font-weight-normal
|
|
|
|
|
-
|
|
|
|
|
-.font-medium
|
|
|
|
|
- font-weight: $font-weight-medium
|
|
|
|
|
-
|
|
|
|
|
-.font-semibold
|
|
|
|
|
- font-weight: $font-weight-semibold
|
|
|
|
|
-
|
|
|
|
|
-.font-bold
|
|
|
|
|
- font-weight: $font-weight-bold
|
|
|
|
|
-
|
|
|
|
|
-.font-extrabold
|
|
|
|
|
- font-weight: $font-weight-extrabold
|
|
|
|
|
-
|
|
|
|
|
-.leading-tight
|
|
|
|
|
- line-height: $line-height-tight
|
|
|
|
|
-
|
|
|
|
|
-.leading-normal
|
|
|
|
|
- line-height: $line-height-normal
|
|
|
|
|
-
|
|
|
|
|
-.leading-relaxed
|
|
|
|
|
- line-height: $line-height-relaxed
|
|
|
|
|
-
|
|
|
|
|
-.tracking-tight
|
|
|
|
|
- letter-spacing: $letter-spacing-tight
|
|
|
|
|
-
|
|
|
|
|
-.tracking-normal
|
|
|
|
|
- letter-spacing: $letter-spacing-normal
|
|
|
|
|
-
|
|
|
|
|
-.tracking-wide
|
|
|
|
|
- letter-spacing: $letter-spacing-wide
|
|
|
|
|
-
|
|
|
|
|
-.text-center
|
|
|
|
|
- text-align: center
|
|
|
|
|
-
|
|
|
|
|
-.text-left
|
|
|
|
|
- text-align: left
|
|
|
|
|
-
|
|
|
|
|
-.text-right
|
|
|
|
|
- text-align: right
|
|
|
|
|
-
|
|
|
|
|
|
|
+// =============================================
|
|
|
// Базовые стили приложения
|
|
// Базовые стили приложения
|
|
|
|
|
+// =============================================
|
|
|
|
|
+
|
|
|
#app
|
|
#app
|
|
|
min-height: 100vh
|
|
min-height: 100vh
|
|
|
background-color: $white
|
|
background-color: $white
|
|
|
- display: flex
|
|
|
|
|
- flex-direction: column
|
|
|
|
|
-
|
|
|
|
|
- .dark &
|
|
|
|
|
|
|
+ &.dark
|
|
|
background-color: $gray-900
|
|
background-color: $gray-900
|
|
|
|
|
+ transition: background-color 0.3s ease-in-out
|
|
|
|
|
+
|
|
|
|
|
+// =============================================
|
|
|
|
|
+// Стили header
|
|
|
|
|
+// =============================================
|
|
|
|
|
|
|
|
-// Header
|
|
|
|
|
.header
|
|
.header
|
|
|
background-color: $white
|
|
background-color: $white
|
|
|
- box-shadow: $shadow-sm
|
|
|
|
|
|
|
+ box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)
|
|
|
position: sticky
|
|
position: sticky
|
|
|
top: 0
|
|
top: 0
|
|
|
- z-index: 100
|
|
|
|
|
- border-bottom: 1px solid $gray-200
|
|
|
|
|
|
|
+ z-index: 50
|
|
|
|
|
|
|
|
.dark &
|
|
.dark &
|
|
|
background-color: $gray-800
|
|
background-color: $gray-800
|
|
|
- border-bottom-color: $gray-700
|
|
|
|
|
|
|
|
|
|
.header__nav
|
|
.header__nav
|
|
|
- container()
|
|
|
|
|
- padding-top: $spacing-3
|
|
|
|
|
- padding-bottom: $spacing-3
|
|
|
|
|
|
|
+ max-width: 1200px
|
|
|
|
|
+ margin: 0 auto
|
|
|
|
|
+ padding: 0.75rem 1rem
|
|
|
|
|
|
|
|
.header__nav-block
|
|
.header__nav-block
|
|
|
flex-between()
|
|
flex-between()
|
|
|
- gap: $spacing-4
|
|
|
|
|
|
|
|
|
|
-.header__nav-name
|
|
|
|
|
- font-size: $font-size-2xl
|
|
|
|
|
- font-weight: $font-weight-bold
|
|
|
|
|
- background: linear-gradient(135deg, $primary-500, $accent-500)
|
|
|
|
|
- -webkit-background-clip: text
|
|
|
|
|
- -webkit-text-fill-color: transparent
|
|
|
|
|
- background-clip: text
|
|
|
|
|
- letter-spacing: $letter-spacing-tight
|
|
|
|
|
|
|
+.header__brand
|
|
|
|
|
+ display: flex
|
|
|
|
|
+ align-items: center
|
|
|
|
|
+ gap: 0.75rem
|
|
|
|
|
+
|
|
|
|
|
+.header__logo
|
|
|
|
|
+ width: 2rem
|
|
|
|
|
+ height: 2rem
|
|
|
|
|
+ object-fit: contain
|
|
|
|
|
+
|
|
|
|
|
+.header__company-name
|
|
|
|
|
+ font-size: 1.25rem
|
|
|
|
|
+ font-weight: bold
|
|
|
|
|
+ color: $gray-900
|
|
|
|
|
+
|
|
|
|
|
+ .dark &
|
|
|
|
|
+ color: $white
|
|
|
|
|
|
|
|
.header__nav-menu
|
|
.header__nav-menu
|
|
|
display: flex
|
|
display: flex
|
|
|
align-items: center
|
|
align-items: center
|
|
|
- gap: $spacing-4
|
|
|
|
|
|
|
+ gap: 1rem
|
|
|
|
|
|
|
|
.header__menu-item
|
|
.header__menu-item
|
|
|
display: flex
|
|
display: flex
|
|
|
align-items: center
|
|
align-items: center
|
|
|
|
|
|
|
|
.header__menu-link
|
|
.header__menu-link
|
|
|
- font-size: $font-size-sm
|
|
|
|
|
- font-weight: $font-weight-medium
|
|
|
|
|
color: $gray-600
|
|
color: $gray-600
|
|
|
|
|
+ transition: color 0.2s ease-in-out
|
|
|
text-decoration: none
|
|
text-decoration: none
|
|
|
- padding: $spacing-2 $spacing-3
|
|
|
|
|
- border-radius: $radius-md
|
|
|
|
|
- transition: all 0.2s ease-in-out
|
|
|
|
|
- position: relative
|
|
|
|
|
|
|
|
|
|
&:hover
|
|
&:hover
|
|
|
- color: $primary-600
|
|
|
|
|
- background-color: $primary-50
|
|
|
|
|
|
|
+ color: $primary-500
|
|
|
|
|
|
|
|
.dark &
|
|
.dark &
|
|
|
color: $gray-300
|
|
color: $gray-300
|
|
|
|
|
|
|
|
&:hover
|
|
&:hover
|
|
|
- color: $primary-400
|
|
|
|
|
- background-color: $primary-900
|
|
|
|
|
|
|
+ color: $primary-500
|
|
|
|
|
|
|
|
.header__theme-toggle
|
|
.header__theme-toggle
|
|
|
- padding: $spacing-2
|
|
|
|
|
- border-radius: $radius-md
|
|
|
|
|
|
|
+ padding: 0.5rem
|
|
|
|
|
+ border-radius: 0.5rem
|
|
|
background-color: $gray-100
|
|
background-color: $gray-100
|
|
|
color: $gray-600
|
|
color: $gray-600
|
|
|
transition: all 0.2s ease-in-out
|
|
transition: all 0.2s ease-in-out
|
|
|
border: none
|
|
border: none
|
|
|
cursor: pointer
|
|
cursor: pointer
|
|
|
- flex-center()
|
|
|
|
|
- width: 2.5rem
|
|
|
|
|
- height: 2.5rem
|
|
|
|
|
|
|
|
|
|
&:hover
|
|
&:hover
|
|
|
background-color: $gray-200
|
|
background-color: $gray-200
|
|
|
- transform: scale(1.05)
|
|
|
|
|
|
|
|
|
|
.dark &
|
|
.dark &
|
|
|
background-color: $gray-700
|
|
background-color: $gray-700
|
|
@@ -331,231 +148,157 @@ body
|
|
|
&:hover
|
|
&:hover
|
|
|
background-color: $gray-600
|
|
background-color: $gray-600
|
|
|
|
|
|
|
|
-// Main content
|
|
|
|
|
|
|
+// =============================================
|
|
|
|
|
+// Стили main content
|
|
|
|
|
+// =============================================
|
|
|
|
|
+
|
|
|
.main
|
|
.main
|
|
|
flex: 1
|
|
flex: 1
|
|
|
- display: flex
|
|
|
|
|
- flex-direction: column
|
|
|
|
|
|
|
|
|
|
-// Page transitions
|
|
|
|
|
-.page-slide
|
|
|
|
|
- &-enter-active,
|
|
|
|
|
- &-leave-active
|
|
|
|
|
- transition: all 0.3s ease-in-out
|
|
|
|
|
|
|
+// =============================================
|
|
|
|
|
+// Анимации переходов между страницами
|
|
|
|
|
+// =============================================
|
|
|
|
|
+
|
|
|
|
|
+.page-slide-enter-active,
|
|
|
|
|
+.page-slide-leave-active
|
|
|
|
|
+ transition: all 0.3s ease-in-out
|
|
|
|
|
+
|
|
|
|
|
+.page-slide-enter-from
|
|
|
|
|
+ opacity: 0
|
|
|
|
|
+ transform: translateX(1rem)
|
|
|
|
|
|
|
|
- &-enter-from
|
|
|
|
|
- opacity: 0
|
|
|
|
|
- transform: translateX($spacing-4)
|
|
|
|
|
|
|
+.page-slide-leave-to
|
|
|
|
|
+ opacity: 0
|
|
|
|
|
+ transform: translateX(-1rem)
|
|
|
|
|
|
|
|
- &-leave-to
|
|
|
|
|
- opacity: 0
|
|
|
|
|
- transform: translateX(-$spacing-4)
|
|
|
|
|
|
|
+// =============================================
|
|
|
|
|
+// Стили footer
|
|
|
|
|
+// =============================================
|
|
|
|
|
|
|
|
-// Footer
|
|
|
|
|
.footer
|
|
.footer
|
|
|
- background: linear-gradient(135deg, $gray-800, $gray-900)
|
|
|
|
|
|
|
+ background-color: $gray-800
|
|
|
color: $white
|
|
color: $white
|
|
|
- padding: $spacing-12 0 $spacing-8
|
|
|
|
|
- margin-top: auto
|
|
|
|
|
|
|
+ padding: 2rem 0
|
|
|
|
|
|
|
|
.dark &
|
|
.dark &
|
|
|
- background: linear-gradient(135deg, $gray-900, $black)
|
|
|
|
|
|
|
+ background-color: $gray-900
|
|
|
|
|
|
|
|
.footer__content
|
|
.footer__content
|
|
|
- container()
|
|
|
|
|
|
|
+ max-width: 1200px
|
|
|
|
|
+ margin: 0 auto
|
|
|
|
|
+ padding: 0 1rem
|
|
|
|
|
|
|
|
.footer__sections
|
|
.footer__sections
|
|
|
display: grid
|
|
display: grid
|
|
|
grid-template-columns: 1fr
|
|
grid-template-columns: 1fr
|
|
|
- gap: $spacing-8
|
|
|
|
|
- margin-bottom: $spacing-8
|
|
|
|
|
|
|
+ gap: 2rem
|
|
|
|
|
|
|
|
- @media (min-width: $breakpoint-md)
|
|
|
|
|
|
|
+ @media (min-width: 768px)
|
|
|
grid-template-columns: repeat(3, 1fr)
|
|
grid-template-columns: repeat(3, 1fr)
|
|
|
|
|
|
|
|
.footer__section
|
|
.footer__section
|
|
|
- flex-col()
|
|
|
|
|
- gap: $spacing-4
|
|
|
|
|
|
|
+ display: flex
|
|
|
|
|
+ flex-direction: column
|
|
|
|
|
+
|
|
|
|
|
+.footer__brand
|
|
|
|
|
+ display: flex
|
|
|
|
|
+ align-items: center
|
|
|
|
|
+ gap: 0.5rem
|
|
|
|
|
+ margin-bottom: 0.5rem
|
|
|
|
|
+
|
|
|
|
|
+.footer__logo
|
|
|
|
|
+ width: 1.5rem
|
|
|
|
|
+ height: 1.5rem
|
|
|
|
|
+ object-fit: contain
|
|
|
|
|
|
|
|
.footer__section-title
|
|
.footer__section-title
|
|
|
- font-size: $font-size-lg
|
|
|
|
|
- font-weight: $font-weight-semibold
|
|
|
|
|
- color: $white
|
|
|
|
|
- margin-bottom: $spacing-2
|
|
|
|
|
|
|
+ font-size: 1.125rem
|
|
|
|
|
+ font-weight: bold
|
|
|
|
|
+ margin-bottom: 1rem
|
|
|
|
|
|
|
|
.footer__section-text
|
|
.footer__section-text
|
|
|
- font-size: $font-size-sm
|
|
|
|
|
color: $gray-400
|
|
color: $gray-400
|
|
|
- line-height: $line-height-relaxed
|
|
|
|
|
|
|
+ margin-bottom: 0.5rem
|
|
|
|
|
|
|
|
.footer__links
|
|
.footer__links
|
|
|
- flex-col()
|
|
|
|
|
- gap: $spacing-2
|
|
|
|
|
|
|
+ display: flex
|
|
|
|
|
+ flex-direction: column
|
|
|
|
|
+ gap: 0.5rem
|
|
|
|
|
|
|
|
.footer__link
|
|
.footer__link
|
|
|
- font-size: $font-size-sm
|
|
|
|
|
color: $gray-400
|
|
color: $gray-400
|
|
|
text-decoration: none
|
|
text-decoration: none
|
|
|
transition: color 0.2s ease-in-out
|
|
transition: color 0.2s ease-in-out
|
|
|
- padding: $spacing-1 0
|
|
|
|
|
|
|
|
|
|
&:hover
|
|
&:hover
|
|
|
color: $white
|
|
color: $white
|
|
|
- transform: translateX($spacing-1)
|
|
|
|
|
-
|
|
|
|
|
-.footer__bottom
|
|
|
|
|
- border-top: 1px solid $gray-700
|
|
|
|
|
- padding-top: $spacing-6
|
|
|
|
|
- text-align: center
|
|
|
|
|
-
|
|
|
|
|
- .footer__copyright
|
|
|
|
|
- font-size: $font-size-sm
|
|
|
|
|
- color: $gray-500
|
|
|
|
|
|
|
|
|
|
|
|
+// =============================================
|
|
|
// Утилитарные классы
|
|
// Утилитарные классы
|
|
|
-.btn
|
|
|
|
|
- display: inline-flex
|
|
|
|
|
- align-items: center
|
|
|
|
|
- justify-content: center
|
|
|
|
|
- padding: $spacing-2 $spacing-4
|
|
|
|
|
- border-radius: $radius-lg
|
|
|
|
|
- font-size: $font-size-sm
|
|
|
|
|
- font-weight: $font-weight-medium
|
|
|
|
|
- text-decoration: none
|
|
|
|
|
- border: none
|
|
|
|
|
- cursor: pointer
|
|
|
|
|
- transition: all 0.2s ease-in-out
|
|
|
|
|
- gap: $spacing-2
|
|
|
|
|
- position: relative
|
|
|
|
|
- overflow: hidden
|
|
|
|
|
-
|
|
|
|
|
- &:focus
|
|
|
|
|
- outline: none
|
|
|
|
|
- box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.2)
|
|
|
|
|
-
|
|
|
|
|
- &::before
|
|
|
|
|
- content: ''
|
|
|
|
|
- position: absolute
|
|
|
|
|
- top: 0
|
|
|
|
|
- left: -100%
|
|
|
|
|
- width: 100%
|
|
|
|
|
- height: 100%
|
|
|
|
|
- background: linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent)
|
|
|
|
|
- transition: left 0.5s
|
|
|
|
|
-
|
|
|
|
|
- &:hover::before
|
|
|
|
|
- left: 100%
|
|
|
|
|
|
|
+// =============================================
|
|
|
|
|
|
|
|
.btn-primary
|
|
.btn-primary
|
|
|
- background: linear-gradient(135deg, $primary-500, $primary-600)
|
|
|
|
|
|
|
+ background-color: $primary-500
|
|
|
color: $white
|
|
color: $white
|
|
|
- box-shadow: $shadow-md
|
|
|
|
|
|
|
+ padding: 0.5rem 1rem
|
|
|
|
|
+ border-radius: 0.5rem
|
|
|
|
|
+ font-weight: 500
|
|
|
|
|
+ transition: background-color 0.2s ease-in-out
|
|
|
|
|
+ border: none
|
|
|
|
|
+ cursor: pointer
|
|
|
|
|
+ text-decoration: none
|
|
|
|
|
+ display: inline-block
|
|
|
|
|
+ text-align: center
|
|
|
|
|
|
|
|
&:hover
|
|
&:hover
|
|
|
- transform: translateY(-1px)
|
|
|
|
|
- box-shadow: $shadow-lg
|
|
|
|
|
|
|
+ background-color: $primary-600
|
|
|
|
|
|
|
|
.btn-secondary
|
|
.btn-secondary
|
|
|
- background-color: $gray-100
|
|
|
|
|
|
|
+ background-color: $gray-200
|
|
|
color: $gray-700
|
|
color: $gray-700
|
|
|
- border: 1px solid $gray-300
|
|
|
|
|
|
|
+ padding: 0.5rem 1rem
|
|
|
|
|
+ border-radius: 0.5rem
|
|
|
|
|
+ font-weight: 500
|
|
|
|
|
+ transition: background-color 0.2s ease-in-out
|
|
|
|
|
+ border: none
|
|
|
|
|
+ cursor: pointer
|
|
|
|
|
+ text-decoration: none
|
|
|
|
|
+ display: inline-block
|
|
|
|
|
+ text-align: center
|
|
|
|
|
|
|
|
&:hover
|
|
&:hover
|
|
|
- background-color: $gray-200
|
|
|
|
|
- transform: translateY(-1px)
|
|
|
|
|
|
|
+ background-color: $gray-300
|
|
|
|
|
|
|
|
.dark &
|
|
.dark &
|
|
|
background-color: $gray-700
|
|
background-color: $gray-700
|
|
|
color: $gray-300
|
|
color: $gray-300
|
|
|
- border-color: $gray-600
|
|
|
|
|
|
|
|
|
|
&:hover
|
|
&:hover
|
|
|
background-color: $gray-600
|
|
background-color: $gray-600
|
|
|
|
|
|
|
|
-.btn-outline
|
|
|
|
|
- background-color: transparent
|
|
|
|
|
- color: $primary-600
|
|
|
|
|
- border: 2px solid $primary-500
|
|
|
|
|
-
|
|
|
|
|
- &:hover
|
|
|
|
|
- background-color: $primary-500
|
|
|
|
|
- color: $white
|
|
|
|
|
- transform: translateY(-1px)
|
|
|
|
|
-
|
|
|
|
|
.card
|
|
.card
|
|
|
background-color: $white
|
|
background-color: $white
|
|
|
- border-radius: $radius-xl
|
|
|
|
|
- box-shadow: $shadow-base
|
|
|
|
|
- border: 1px solid $gray-200
|
|
|
|
|
- overflow: hidden
|
|
|
|
|
- transition: all 0.3s ease-in-out
|
|
|
|
|
|
|
+ border-radius: 0.5rem
|
|
|
|
|
+ box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)
|
|
|
|
|
+ padding: 1.5rem
|
|
|
|
|
|
|
|
.dark &
|
|
.dark &
|
|
|
background-color: $gray-800
|
|
background-color: $gray-800
|
|
|
- border-color: $gray-700
|
|
|
|
|
-
|
|
|
|
|
- &:hover
|
|
|
|
|
- transform: translateY(-2px)
|
|
|
|
|
- box-shadow: $shadow-lg
|
|
|
|
|
-
|
|
|
|
|
-.card__header
|
|
|
|
|
- padding: $spacing-6
|
|
|
|
|
- border-bottom: 1px solid $gray-200
|
|
|
|
|
-
|
|
|
|
|
- .dark &
|
|
|
|
|
- border-bottom-color: $gray-700
|
|
|
|
|
-
|
|
|
|
|
-.card__title
|
|
|
|
|
- font-size: $font-size-xl
|
|
|
|
|
- font-weight: $font-weight-semibold
|
|
|
|
|
- color: $gray-900
|
|
|
|
|
- margin-bottom: $spacing-2
|
|
|
|
|
-
|
|
|
|
|
- .dark &
|
|
|
|
|
- color: $white
|
|
|
|
|
-
|
|
|
|
|
-.card__content
|
|
|
|
|
- padding: $spacing-6
|
|
|
|
|
-
|
|
|
|
|
-.card__footer
|
|
|
|
|
- padding: $spacing-6
|
|
|
|
|
- border-top: 1px solid $gray-200
|
|
|
|
|
- background-color: $gray-50
|
|
|
|
|
-
|
|
|
|
|
- .dark &
|
|
|
|
|
- border-top-color: $gray-700
|
|
|
|
|
- background-color: $gray-700
|
|
|
|
|
-
|
|
|
|
|
-.form-group
|
|
|
|
|
- flex-col()
|
|
|
|
|
- gap: $spacing-2
|
|
|
|
|
- margin-bottom: $spacing-4
|
|
|
|
|
-
|
|
|
|
|
-.form-label
|
|
|
|
|
- font-size: $font-size-sm
|
|
|
|
|
- font-weight: $font-weight-medium
|
|
|
|
|
- color: $gray-700
|
|
|
|
|
- display: block
|
|
|
|
|
-
|
|
|
|
|
- .dark &
|
|
|
|
|
- color: $gray-300
|
|
|
|
|
|
|
|
|
|
.form-input
|
|
.form-input
|
|
|
width: 100%
|
|
width: 100%
|
|
|
- padding: $spacing-3
|
|
|
|
|
- border: 2px solid $gray-300
|
|
|
|
|
- border-radius: $radius-lg
|
|
|
|
|
|
|
+ padding: 0.5rem 0.75rem
|
|
|
|
|
+ border: 1px solid $gray-300
|
|
|
|
|
+ border-radius: 0.5rem
|
|
|
background-color: $white
|
|
background-color: $white
|
|
|
color: $gray-900
|
|
color: $gray-900
|
|
|
- font-size: $font-size-base
|
|
|
|
|
- font-family: $font-family-sans
|
|
|
|
|
|
|
+ outline: none
|
|
|
transition: all 0.2s ease-in-out
|
|
transition: all 0.2s ease-in-out
|
|
|
|
|
|
|
|
&:focus
|
|
&:focus
|
|
|
outline: none
|
|
outline: none
|
|
|
border-color: $primary-500
|
|
border-color: $primary-500
|
|
|
- box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.1)
|
|
|
|
|
- transform: translateY(-1px)
|
|
|
|
|
|
|
+ box-shadow: 0 0 0 2px rgba($primary-500, 0.2)
|
|
|
|
|
|
|
|
.dark &
|
|
.dark &
|
|
|
background-color: $gray-700
|
|
background-color: $gray-700
|
|
@@ -565,116 +308,53 @@ body
|
|
|
&:focus
|
|
&:focus
|
|
|
border-color: $primary-500
|
|
border-color: $primary-500
|
|
|
|
|
|
|
|
-.form-textarea
|
|
|
|
|
- @extend .form-input
|
|
|
|
|
- resize: vertical
|
|
|
|
|
- min-height: 6rem
|
|
|
|
|
- line-height: $line-height-relaxed
|
|
|
|
|
-
|
|
|
|
|
-.form-select
|
|
|
|
|
- @extend .form-input
|
|
|
|
|
-
|
|
|
|
|
-// Сетка
|
|
|
|
|
-.grid
|
|
|
|
|
- display: grid
|
|
|
|
|
- gap: $spacing-6
|
|
|
|
|
-
|
|
|
|
|
-.grid-cols-1
|
|
|
|
|
- grid-template-columns: 1fr
|
|
|
|
|
-
|
|
|
|
|
-.grid-cols-2
|
|
|
|
|
- grid-template-columns: repeat(2, 1fr)
|
|
|
|
|
-
|
|
|
|
|
-.grid-cols-3
|
|
|
|
|
- grid-template-columns: repeat(3, 1fr)
|
|
|
|
|
-
|
|
|
|
|
-.grid-cols-4
|
|
|
|
|
- grid-template-columns: repeat(4, 1fr)
|
|
|
|
|
|
|
+.form-label
|
|
|
|
|
+ display: block
|
|
|
|
|
+ font-size: 0.875rem
|
|
|
|
|
+ font-weight: 500
|
|
|
|
|
+ color: $gray-700
|
|
|
|
|
+ margin-bottom: 0.5rem
|
|
|
|
|
|
|
|
-@media (min-width: $breakpoint-sm)
|
|
|
|
|
- .sm\:grid-cols-2
|
|
|
|
|
- grid-template-columns: repeat(2, 1fr)
|
|
|
|
|
|
|
+ .dark &
|
|
|
|
|
+ color: $gray-300
|
|
|
|
|
|
|
|
-@media (min-width: $breakpoint-md)
|
|
|
|
|
- .md\:grid-cols-2
|
|
|
|
|
- grid-template-columns: repeat(2, 1fr)
|
|
|
|
|
- .md\:grid-cols-3
|
|
|
|
|
- grid-template-columns: repeat(3, 1fr)
|
|
|
|
|
|
|
+// =============================================
|
|
|
|
|
+// Адаптивные стили
|
|
|
|
|
+// =============================================
|
|
|
|
|
|
|
|
-@media (min-width: $breakpoint-lg)
|
|
|
|
|
- .lg\:grid-cols-3
|
|
|
|
|
- grid-template-columns: repeat(3, 1fr)
|
|
|
|
|
- .lg\:grid-cols-4
|
|
|
|
|
- grid-template-columns: repeat(4, 1fr)
|
|
|
|
|
-
|
|
|
|
|
-// Отступы
|
|
|
|
|
-.p-0 { padding: 0 }
|
|
|
|
|
-.p-1 { padding: $spacing-1 }
|
|
|
|
|
-.p-2 { padding: $spacing-2 }
|
|
|
|
|
-.p-3 { padding: $spacing-3 }
|
|
|
|
|
-.p-4 { padding: $spacing-4 }
|
|
|
|
|
-.p-6 { padding: $spacing-6 }
|
|
|
|
|
-.p-8 { padding: $spacing-8 }
|
|
|
|
|
-
|
|
|
|
|
-.py-2 { padding-top: $spacing-2; padding-bottom: $spacing-2 }
|
|
|
|
|
-.py-3 { padding-top: $spacing-3; padding-bottom: $spacing-3 }
|
|
|
|
|
-.py-4 { padding-top: $spacing-4; padding-bottom: $spacing-4 }
|
|
|
|
|
-.py-6 { padding-top: $spacing-6; padding-bottom: $spacing-6 }
|
|
|
|
|
-.py-8 { padding-top: $spacing-8; padding-bottom: $spacing-8 }
|
|
|
|
|
-
|
|
|
|
|
-.px-3 { padding-left: $spacing-3; padding-right: $spacing-3 }
|
|
|
|
|
-.px-4 { padding-left: $spacing-4; padding-right: $spacing-4 }
|
|
|
|
|
-.px-6 { padding-left: $spacing-6; padding-right: $spacing-6 }
|
|
|
|
|
-
|
|
|
|
|
-// Маржины
|
|
|
|
|
-.m-0 { margin: 0 }
|
|
|
|
|
-.m-4 { margin: $spacing-4 }
|
|
|
|
|
-.m-6 { margin: $spacing-6 }
|
|
|
|
|
-
|
|
|
|
|
-.mt-2 { margin-top: $spacing-2 }
|
|
|
|
|
-.mt-4 { margin-top: $spacing-4 }
|
|
|
|
|
-.mt-6 { margin-top: $spacing-6 }
|
|
|
|
|
-.mt-8 { margin-top: $spacing-8 }
|
|
|
|
|
-
|
|
|
|
|
-.mb-2 { margin-bottom: $spacing-2 }
|
|
|
|
|
-.mb-4 { margin-bottom: $spacing-4 }
|
|
|
|
|
-.mb-6 { margin-bottom: $spacing-6 }
|
|
|
|
|
-.mb-8 { margin-bottom: $spacing-8 }
|
|
|
|
|
-
|
|
|
|
|
-// Темная тема
|
|
|
|
|
-@media (prefers-color-scheme: dark)
|
|
|
|
|
- :root
|
|
|
|
|
- color-scheme: dark
|
|
|
|
|
-
|
|
|
|
|
-// Адаптивность
|
|
|
|
|
-@media (max-width: $breakpoint-md)
|
|
|
|
|
|
|
+@media (max-width: 768px)
|
|
|
.header__nav-block
|
|
.header__nav-block
|
|
|
flex-direction: column
|
|
flex-direction: column
|
|
|
- gap: $spacing-3
|
|
|
|
|
|
|
+ gap: 1rem
|
|
|
|
|
+
|
|
|
|
|
+ .header__brand
|
|
|
|
|
+ justify-content: center
|
|
|
|
|
|
|
|
.header__nav-menu
|
|
.header__nav-menu
|
|
|
- width: 100%
|
|
|
|
|
justify-content: center
|
|
justify-content: center
|
|
|
flex-wrap: wrap
|
|
flex-wrap: wrap
|
|
|
|
|
|
|
|
.footer__sections
|
|
.footer__sections
|
|
|
grid-template-columns: 1fr
|
|
grid-template-columns: 1fr
|
|
|
- gap: $spacing-6
|
|
|
|
|
|
|
+ gap: 1.5rem
|
|
|
|
|
+
|
|
|
|
|
+@media (max-width: 480px)
|
|
|
|
|
+ .header__nav
|
|
|
|
|
+ padding: 0.5rem
|
|
|
|
|
|
|
|
-@media (max-width: $breakpoint-sm)
|
|
|
|
|
- .header__nav-name
|
|
|
|
|
- font-size: $font-size-xl
|
|
|
|
|
- text-align: center
|
|
|
|
|
|
|
+ .header__company-name
|
|
|
|
|
+ font-size: 1.1rem
|
|
|
|
|
|
|
|
.header__menu-link
|
|
.header__menu-link
|
|
|
- padding: $spacing-1 $spacing-2
|
|
|
|
|
- font-size: $font-size-xs
|
|
|
|
|
|
|
+ font-size: 0.875rem
|
|
|
|
|
|
|
|
- .btn
|
|
|
|
|
- padding: $spacing-2 $spacing-3
|
|
|
|
|
- font-size: $font-size-xs
|
|
|
|
|
|
|
+ .footer__content
|
|
|
|
|
+ padding: 0 0.5rem
|
|
|
|
|
|
|
|
- .card__header,
|
|
|
|
|
- .card__content,
|
|
|
|
|
- .card__footer
|
|
|
|
|
- padding: $spacing-4
|
|
|
|
|
|
|
+// =============================================
|
|
|
|
|
+// Темная тема (автоматическая)
|
|
|
|
|
+// =============================================
|
|
|
|
|
+
|
|
|
|
|
+@media (prefers-color-scheme: dark)
|
|
|
|
|
+ :root
|
|
|
|
|
+ color-scheme: dark
|