Compare commits
190 Commits
a39c96cc61
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 174f702e3e | |||
| f6f4bfa2ab | |||
| f625537b6f | |||
| 794d5e810d | |||
| a5c0985093 | |||
| 70b481480f | |||
| a37e009109 | |||
| 191ceaca36 | |||
| 53ec69d27c | |||
| 26f29e4353 | |||
| e1f239d6ee | |||
| 9cf25e37ed | |||
| 355abb1add | |||
| 0c8db13341 | |||
| a3795dd267 | |||
| 90ffcd090c | |||
| e5575398a3 | |||
| acb52aef73 | |||
| fa04e5275f | |||
| b31f99aa94 | |||
| 0288c05e2b | |||
| c5baa2d9ab | |||
| 9c96d8c253 | |||
| 3aecf2eb08 | |||
| 423394a9d9 | |||
| 4c28c17088 | |||
| 3b0e1f6524 | |||
| f376656937 | |||
| c57eec05c9 | |||
| 197f910b82 | |||
| a5cca5f23e | |||
| a940f2ff0d | |||
| e454fd2343 | |||
| 66a1170221 | |||
| 8a175ee357 | |||
| 5f403710d1 | |||
| 6626840fa9 | |||
| 529fb3fc5d | |||
| d1c3e68d6d | |||
| d816733b0d | |||
| 168ae345d6 | |||
| d071458032 | |||
| cae627f0b0 | |||
| 7102af7d2d | |||
| 5ff75a4a80 | |||
| 495cc43246 | |||
| 80deab3c42 | |||
| 360493e564 | |||
| 6030998018 | |||
| faac300903 | |||
| abaff023cd | |||
| a6d7a8c8e0 | |||
| 4dbe424f84 | |||
| 2f94bf20be | |||
| 7488a9f8c8 | |||
| ee1107c976 | |||
| b759ce2d5a | |||
| b4c8ffe95d | |||
| 84c88ba406 | |||
| 86e6a2acc1 | |||
| b2f7612452 | |||
| 432409b3d8 | |||
| 09769542f9 | |||
| fca75a30aa | |||
| a90d7c06a9 | |||
| 6e342ca021 | |||
| 4ce12a5428 | |||
| d89619fe61 | |||
| 7ba65e73ae | |||
| b0387362b5 | |||
| 4a58a47a8e | |||
| c284c1a784 | |||
| e8506e1b4e | |||
| a7dd676a76 | |||
| 61805df66b | |||
| e98d426324 | |||
| 6c062ce3c8 | |||
| dd4134f2d7 | |||
| 8f47d4fb65 | |||
| c1398284c7 | |||
| 63e507d0ff | |||
| a9b4fd95c3 | |||
| 5a16466766 | |||
| 4b0c923ec0 | |||
| 0fe7aa189c | |||
| 87f67aa24a | |||
| 9133bfd8fa | |||
| 93e48f3cbc | |||
| baadc67fcf | |||
| bc16aea3a4 | |||
| 8041e3eb4d | |||
| 3e4c0b2ab5 | |||
| 960c9ba5b0 | |||
| 3efec91d74 | |||
| 9e48c72245 | |||
| 4dac9a5eec | |||
| bf25c67f1e | |||
| 1245899c07 | |||
| 66f25b6937 | |||
| 2d44edf5ab | |||
| 7062c756b6 | |||
| 7c173c9195 | |||
| e070ab15ac | |||
| 400498c6fa | |||
| aa1657bd10 | |||
| 3c5331c2d3 | |||
| 800b7ba493 | |||
| bc2689d1cf | |||
| ce9be11c0a | |||
| 43ba192496 | |||
| ee410315ee | |||
| f3c78f0575 | |||
| b98a4a5364 | |||
| 68aad97e46 | |||
| 8de6676b40 | |||
| 7a345a6c80 | |||
| e3adbeeea4 | |||
| b0db3534f2 | |||
| 6f646264dc | |||
| d83940b47d | |||
| 4996d02f71 | |||
| da6f47f439 | |||
| 54fbc3f4b2 | |||
| 10411dd714 | |||
| 6e2c54eccf | |||
| 89166100e3 | |||
| 3d28a1ee86 | |||
| 034d5faa0d | |||
| f58038ab90 | |||
| ad25cc67ec | |||
| 384d1e8aec | |||
| b0a1007a76 | |||
| 0419ba7847 | |||
| c52dbca9a1 | |||
| 43153a9fdf | |||
| c23dd1ff4c | |||
| 67d9528614 | |||
| 1151744247 | |||
| 4be3686d2b | |||
| 9dd3fbe47d | |||
| f42e155f2b | |||
| f5a084684a | |||
| 70e1fa2a10 | |||
| b22adac365 | |||
| 3a14430cd5 | |||
| a329720f1c | |||
| e03f4a015a | |||
| 73621de710 | |||
| 94f677ae6f | |||
| 8afdfc87c5 | |||
| cc3739f701 | |||
| dbee8dabb1 | |||
| cfb7acfddb | |||
| e14072e829 | |||
| f80f8d8c7e | |||
| e9b3dc1da9 | |||
| 5cbae093e9 | |||
| 63137188e5 | |||
|
|
07031d693c | ||
| fdaa18c0e6 | |||
| 531955bdc7 | |||
| 2cfa314c3c | |||
| ff6ee93497 | |||
| cfe37ec57d | |||
| 995733d6e3 | |||
| aec622831d | |||
| d62261066f | |||
| e8f092a88b | |||
| a1da574c04 | |||
| 08e28d14c9 | |||
| 2a852cbb51 | |||
| cffd810184 | |||
| f561c32526 | |||
| 774ee85f8d | |||
| a1c6db28a8 | |||
| cd36747b5c | |||
| bcd0c8900d | |||
| f3e3b608f1 | |||
| a839114cdf | |||
| a315a52791 | |||
| fc0d9f07c0 | |||
| d020bdf9d0 | |||
| cd323ab66c | |||
| 26b4b77271 | |||
| 0ac236d2ff | |||
| 09cfe8938f | |||
| 8989d13928 | |||
| 769a42ec8b | |||
| 60ff29b23f | |||
| 15ff3d37fc |
4
.gitignore
vendored
@@ -415,3 +415,7 @@ fabric.properties
|
||||
# Android studio 3.1+ serialized cache file
|
||||
.idea/caches/build_file_checksums.ser
|
||||
|
||||
# packages for node
|
||||
package.json
|
||||
package-lock.json
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
from django.http import QueryDict
|
||||
from django.template.loader import render_to_string
|
||||
from SubscribesApp.funcs import check_option_in_cur_user_subscribe
|
||||
|
||||
@@ -56,7 +57,7 @@ def get_profile_page_content_html(request, page_name, data):
|
||||
return None
|
||||
|
||||
|
||||
def get_profile_change_page_content_html(request):
|
||||
def get_profile_change_page_content_html(request, data=None):
|
||||
|
||||
init_Dict = {
|
||||
'firstname': request.user.first_name,
|
||||
@@ -66,6 +67,25 @@ def get_profile_change_page_content_html(request):
|
||||
'country': request.user.user_profile.country,
|
||||
'city': request.user.user_profile.city,
|
||||
}
|
||||
|
||||
if data:
|
||||
if type(data) == QueryDict:
|
||||
data = data.dict()
|
||||
init_Dict.update(data)
|
||||
# if 'firstname' in data:
|
||||
# init_Dict.update({'first_name': data['firstname']})
|
||||
# if 'lastname' in data:
|
||||
# init_Dict.update({'last_name': data['lastname']})
|
||||
# if 'email' in data:
|
||||
# init_Dict.update({'email': data['email']})
|
||||
# init_Dict.update({'username': data['email']})
|
||||
# if 'country' in data:
|
||||
# init_Dict.update({'country': data['country']})
|
||||
# if 'city' in data:
|
||||
# init_Dict.update({'city': data['city']})
|
||||
# if 'tel' in data:
|
||||
# init_Dict.update({'tel': data['tel']})
|
||||
|
||||
from .forms import RegistrationForm
|
||||
form = RegistrationForm(initial=init_Dict)
|
||||
|
||||
|
||||
@@ -78,9 +78,10 @@ def password_recovery_ajax(request):
|
||||
try:
|
||||
user = User.objects.get(email=email)
|
||||
except User.DoesNotExist:
|
||||
msg = _('Пользователь с указанным email не зарегистрирован на сайте')
|
||||
return JsonResponse({
|
||||
'status': 'error',
|
||||
'error': _('Пользователь с указанным email не зарегистрирован на сайте')
|
||||
'error': msg
|
||||
}, status=400)
|
||||
|
||||
user.user_profile.authMailCode = uuid1().hex
|
||||
@@ -137,7 +138,7 @@ def password_recovery_ajax(request):
|
||||
return JsonResponse({
|
||||
'status': 'sended',
|
||||
'message': _('На email') + ' ' + email + ' '
|
||||
+ _('отправлено письмо с инструкциями для восстановления пароля')
|
||||
+ _('отправлено письмо с инструкциями для восстановления пароля. Если не пришло письмо, проверьте папку СПАМ')
|
||||
})
|
||||
|
||||
except Exception as e:
|
||||
@@ -202,6 +203,8 @@ def mailing_subscribe_ajax(request):
|
||||
|
||||
|
||||
def send_message_ajax(request):
|
||||
print('send_message_ajax')
|
||||
|
||||
if request.method != 'POST':
|
||||
raise Http404
|
||||
|
||||
@@ -310,10 +313,18 @@ def send_message_ajax(request):
|
||||
f'</p>'
|
||||
}
|
||||
|
||||
print('render html for mail')
|
||||
|
||||
html = render_to_string('mail/m_request_offer.html', Dict, request)
|
||||
from BaseModels.mailSender import admin_send_mail_by_SMTPlib
|
||||
mail_sets = get_mail_send_options()
|
||||
to = [mail_sets['sender_email']]
|
||||
opts = get_options_by_opt_types('support_email', only_vals=True)
|
||||
print(f'options: {str(opts)}')
|
||||
if opts and 'support_email' in opts:
|
||||
to = [opts['support_email']]
|
||||
else:
|
||||
to = [mail_sets['sender_email']]
|
||||
print(f'to: {str(to)}')
|
||||
res = admin_send_mail_by_SMTPlib(
|
||||
mail_sets,
|
||||
subject=subject,
|
||||
@@ -501,7 +512,7 @@ def change_profile_confirm_ajax(request):
|
||||
if data_for_save:
|
||||
user_profiles.update(**data_for_save)
|
||||
|
||||
html = get_profile_change_page_content_html(request)
|
||||
html = get_profile_change_page_content_html(request, data)
|
||||
from GeneralApp.funcs import get_add_to_ajax_response_Dict
|
||||
res_Dict = {'html': html}
|
||||
res_Dict.update(get_add_to_ajax_response_Dict(request.user))
|
||||
@@ -710,6 +721,7 @@ def registration_ajax(request):
|
||||
}
|
||||
|
||||
res = send_check_email_after_registration(mail_Dict, user)
|
||||
print(str(res))
|
||||
# res = send_registration_mail(mail_Dict, user)
|
||||
|
||||
res_Dict = {
|
||||
|
||||
@@ -29,12 +29,31 @@ class BaseModel(models.Model):
|
||||
|
||||
json_data = models.JSONField(verbose_name=_('Дополнительные данные'), default=dict, blank=True)
|
||||
|
||||
media_items = GenericRelation('GeneralApp.MediaItem', related_query_name='grel_%(class)s_for_media_item')
|
||||
|
||||
def __str__(self):
|
||||
if self.name:
|
||||
return self.name
|
||||
else:
|
||||
return str(self.id)
|
||||
|
||||
def get_media_items(self, exclude_kwargs=None):
|
||||
if not exclude_kwargs:
|
||||
exclude_kwargs = {}
|
||||
return self.media_items.exclude(
|
||||
**exclude_kwargs
|
||||
).filter(
|
||||
enable=True
|
||||
).order_by('order')
|
||||
|
||||
def get_video_items(self):
|
||||
exclude_kwargs = {'video': None}
|
||||
return self.get_media_items(exclude_kwargs=exclude_kwargs)
|
||||
|
||||
def get_picture_items(self):
|
||||
exclude_kwargs = {'picture': None}
|
||||
return self.get_media_items(exclude_kwargs=exclude_kwargs)
|
||||
|
||||
def pop_node_by_name(self, node_name):
|
||||
if not self.json_data or not node_name in self.json_data:
|
||||
return None
|
||||
@@ -108,7 +127,6 @@ class BaseModelViewPage(BaseModel):
|
||||
FAQ_title = models.CharField(max_length=250, verbose_name=_(u'FAQ Заголовок'), null=True, blank=True)
|
||||
FAQ_items = GenericRelation('GeneralApp.FAQitem', related_query_name='grel_%(class)s_for_faq_item')
|
||||
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
|
||||
@@ -105,6 +105,7 @@ def admin_send_mail_by_SMTPlib(sets, subject, from_email, to, html_content, atta
|
||||
|
||||
def send_mail_by_SMTPlib(sets, subject, from_email, to_init, html_content, smtp_server, smtp_port, smtp_login, smtp_password,
|
||||
attachments=None):
|
||||
print('send_mail_by_SMTPlib')
|
||||
to = to_init
|
||||
# if not settings.prod_server:
|
||||
# to = 'web@syncsystems.net'
|
||||
@@ -123,7 +124,11 @@ def send_mail_by_SMTPlib(sets, subject, from_email, to_init, html_content, smtp_
|
||||
try:
|
||||
# context = ssl.create_default_context()
|
||||
|
||||
mail_lib = smtplib.SMTP(smtp_server, smtp_port)
|
||||
print(f'connect to mail server smtp_server={str(smtp_server)} smtp_port={str(smtp_port)}')
|
||||
|
||||
mail_lib = smtplib.SMTP(smtp_server, smtp_port, timeout=60)
|
||||
|
||||
print('connection established')
|
||||
|
||||
res = mail_lib.ehlo()
|
||||
|
||||
@@ -139,14 +144,18 @@ def send_mail_by_SMTPlib(sets, subject, from_email, to_init, html_content, smtp_
|
||||
res = mail_lib.esmtp_features['auth'] = 'LOGIN PLAIN'
|
||||
# print('mail_lib.esmtp_features = {0}'.format(str(res)))
|
||||
|
||||
print('try to login')
|
||||
|
||||
res = mail_lib.login(smtp_login, smtp_password)
|
||||
# print('mail_lib.login = {0}'.format(str(res)))
|
||||
|
||||
print('login')
|
||||
|
||||
res = None
|
||||
|
||||
if type(to) in (list, tuple):
|
||||
if sets['sender_email'] in to:
|
||||
to.remove(sets['sender_email'])
|
||||
# if sets['sender_email'] in to:
|
||||
# to.remove(sets['sender_email'])
|
||||
|
||||
if len(to) > 1:
|
||||
to_str = u', '.join(to)
|
||||
@@ -159,6 +168,8 @@ def send_mail_by_SMTPlib(sets, subject, from_email, to_init, html_content, smtp_
|
||||
to = []
|
||||
to.append(to_str)
|
||||
|
||||
print(f'send mail to {str(to)}')
|
||||
|
||||
if type(subject) != str:
|
||||
try:
|
||||
subject = subject.decode('utf-8')
|
||||
@@ -168,6 +179,8 @@ def send_mail_by_SMTPlib(sets, subject, from_email, to_init, html_content, smtp_
|
||||
except:
|
||||
pass
|
||||
|
||||
print(f'add context')
|
||||
|
||||
msg = MIMEMultipart()
|
||||
from email.headerregistry import Address
|
||||
msg['From'] = from_email
|
||||
@@ -192,13 +205,17 @@ def send_mail_by_SMTPlib(sets, subject, from_email, to_init, html_content, smtp_
|
||||
res = msg.attach(attachments)
|
||||
# print('else attach file complete = {0}'.format(str(res)))
|
||||
|
||||
print(f'send mail')
|
||||
|
||||
res = mail_lib.sendmail(from_email, to, msg.as_string())
|
||||
|
||||
msg = mail_lib.quit()
|
||||
# print('mail_lib.quit = {0}'.format(str(msg)))
|
||||
|
||||
except Exception as e:
|
||||
msg = 'send_mail_by_SMTPlib error = {0}'.format(str(e))
|
||||
import traceback
|
||||
msg = (f'send_mail_by_SMTPlib error = {str(e)}\n<br>'
|
||||
f'{str(traceback.format_exc())}')
|
||||
print(msg)
|
||||
try:
|
||||
mail_lib.quit()
|
||||
|
||||
18
BillingApp/migrations/0006_alter_subscribeorder_currency.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 4.2.2 on 2024-07-12 17:23
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('BillingApp', '0005_subscribeorder_last_operation_status'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='subscribeorder',
|
||||
name='currency',
|
||||
field=models.CharField(default='KZT', max_length=3, verbose_name='Валюта'),
|
||||
),
|
||||
]
|
||||
@@ -3,6 +3,8 @@ from .models import *
|
||||
from django.contrib import admin
|
||||
from django.utils.translation import gettext as _
|
||||
|
||||
|
||||
|
||||
class Admin_StaticPage(Admin_Trans_BaseModelViewPage):
|
||||
|
||||
fieldsets = [
|
||||
|
||||
41
GeneralApp/migrations/0006_mediaitem.py
Normal file
@@ -0,0 +1,41 @@
|
||||
# Generated by Django 4.2.2 on 2024-11-15 14:50
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('contenttypes', '0002_remove_content_type_name'),
|
||||
('GeneralApp', '0005_option_name_en_option_name_ru_option_prefix_en_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='MediaItem',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.TextField(blank=True, help_text='Название', null=True, verbose_name='Название')),
|
||||
('name_ru', models.TextField(blank=True, help_text='Название', null=True, verbose_name='Название')),
|
||||
('name_en', models.TextField(blank=True, help_text='Название', null=True, verbose_name='Название')),
|
||||
('name_plural', models.TextField(blank=True, null=True, verbose_name='Название (множественное число)')),
|
||||
('order', models.IntegerField(blank=True, null=True, verbose_name='Очередность отображения')),
|
||||
('createDT', models.DateTimeField(auto_now_add=True, verbose_name='Дата и время создания')),
|
||||
('modifiedDT', models.DateTimeField(blank=True, null=True, verbose_name='Дата и время последнего изменения')),
|
||||
('enable', models.BooleanField(db_index=True, default=True, verbose_name='Включено')),
|
||||
('json_data', models.JSONField(blank=True, default=dict, verbose_name='Дополнительные данные')),
|
||||
('object_id', models.PositiveIntegerField()),
|
||||
('picture', models.ImageField(blank=True, null=True, upload_to='media/', verbose_name='Фото')),
|
||||
('video', models.FileField(blank=True, null=True, upload_to='media/video/', verbose_name='Видео')),
|
||||
('comment', models.TextField(blank=True, null=True, verbose_name='Комментарий')),
|
||||
('comment_ru', models.TextField(blank=True, null=True, verbose_name='Комментарий')),
|
||||
('comment_en', models.TextField(blank=True, null=True, verbose_name='Комментарий')),
|
||||
('content_type', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='contenttypes.contenttype')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Медиа элемент',
|
||||
'verbose_name_plural': 'Медиа элементы',
|
||||
},
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,23 @@
|
||||
# Generated by Django 4.2.2 on 2024-11-15 15:58
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('GeneralApp', '0006_mediaitem'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='mediaitem',
|
||||
name='picture',
|
||||
field=models.ImageField(blank=True, null=True, upload_to='uploads/', verbose_name='Фото'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='mediaitem',
|
||||
name='video',
|
||||
field=models.FileField(blank=True, null=True, upload_to='uploads/video/', verbose_name='Видео'),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,23 @@
|
||||
# Generated by Django 4.2.2 on 2024-11-15 15:59
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('GeneralApp', '0007_alter_mediaitem_picture_alter_mediaitem_video'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='mediaitem',
|
||||
name='picture',
|
||||
field=models.ImageField(blank=True, null=True, upload_to='media_items/photo/', verbose_name='Фото'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='mediaitem',
|
||||
name='video',
|
||||
field=models.FileField(blank=True, null=True, upload_to='media_items/video/', verbose_name='Видео'),
|
||||
),
|
||||
]
|
||||
@@ -3,6 +3,26 @@ from BaseModels.base_models import BaseModelViewPage, BaseModel
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
# from ckeditor.fields import RichTextField
|
||||
from ckeditor_uploader.fields import RichTextUploadingField
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.contrib.contenttypes.fields import GenericForeignKey
|
||||
|
||||
|
||||
class MediaItem(BaseModel):
|
||||
|
||||
content_type = models.ForeignKey(ContentType, on_delete=models.SET_NULL, null=True)
|
||||
object_id = models.PositiveIntegerField()
|
||||
content_object = GenericForeignKey('content_type', 'object_id')
|
||||
|
||||
picture = models.ImageField(upload_to='media_items/photo/', verbose_name=_('Фото'), null=True, blank=True)
|
||||
video = models.FileField(upload_to='media_items/video/', verbose_name=_('Видео'), null=True, blank=True)
|
||||
|
||||
comment = models.TextField(verbose_name=_('Комментарий'), null=True, blank=True)
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('Медиа элемент')
|
||||
verbose_name_plural = _('Медиа элементы')
|
||||
|
||||
|
||||
|
||||
class StaticPage(BaseModelViewPage):
|
||||
promo_header = models.BooleanField(verbose_name=_('Промо-хэдер'), default=False)
|
||||
@@ -29,9 +49,6 @@ class Option(BaseModel):
|
||||
|
||||
class FAQitem(BaseModel):
|
||||
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.contrib.contenttypes.fields import GenericForeignKey
|
||||
|
||||
content_type = models.ForeignKey(ContentType, on_delete=models.SET_NULL, null=True)
|
||||
object_id = models.PositiveIntegerField()
|
||||
content_object = GenericForeignKey('content_type', 'object_id')
|
||||
|
||||
@@ -27,3 +27,9 @@ class FAQitem_TranslationOptions(TranslationOptions):
|
||||
)
|
||||
translator.register(FAQitem, FAQitem_TranslationOptions)
|
||||
|
||||
class MediaItem_TranslationOptions(TranslationOptions):
|
||||
fields = (
|
||||
'name', 'comment',
|
||||
)
|
||||
translator.register(MediaItem, MediaItem_TranslationOptions)
|
||||
|
||||
|
||||
@@ -6,6 +6,11 @@ from .views import *
|
||||
|
||||
urlpatterns = [
|
||||
path('', MainPage, name='main'),
|
||||
path('mover_landing_page/', LandingMoverPage, name='mover_landing_page'),
|
||||
path('customer_landing_page/', LandingCustomerPage, name='customer_landing_page'),
|
||||
|
||||
|
||||
path('page/<str:url>/', StaticPageView, name='static_page'),
|
||||
path('test_code', test_code, name='test_code'),
|
||||
path('generate_routes/<int:routes_count>/', generate_routes, name='generate_routes'),
|
||||
]
|
||||
@@ -1,8 +1,9 @@
|
||||
import json
|
||||
|
||||
from django.http import HttpResponse, Http404, FileResponse
|
||||
from django.http import HttpResponse, Http404, FileResponse, HttpResponseRedirect
|
||||
from django.template import loader, RequestContext
|
||||
from django.contrib.auth.decorators import login_required
|
||||
|
||||
from .models import *
|
||||
from django.conf import settings
|
||||
from .funcs import get_inter_http_response
|
||||
@@ -14,9 +15,9 @@ from django.views.decorators.csrf import csrf_exempt
|
||||
from webpush import send_user_notification
|
||||
import json
|
||||
from datetime import datetime, timedelta
|
||||
from django.urls import reverse
|
||||
|
||||
def test_code(request):
|
||||
|
||||
def generate_routes(request, routes_count):
|
||||
if (not request.user
|
||||
or not request.user.is_active
|
||||
or not request.user.is_authenticated
|
||||
@@ -45,9 +46,60 @@ def test_code(request):
|
||||
weight=item,
|
||||
phone='0987654321',
|
||||
owner=request.user
|
||||
) for item in range(1000)
|
||||
) for item in range(routes_count)
|
||||
]
|
||||
|
||||
Route.objects.bulk_create(routes)
|
||||
|
||||
if res:
|
||||
if type(res) == str:
|
||||
return HttpResponse(res)
|
||||
else:
|
||||
return res
|
||||
|
||||
return HttpResponse('finished')
|
||||
|
||||
|
||||
|
||||
def test_code(request):
|
||||
|
||||
if (not request.user
|
||||
or not request.user.is_active
|
||||
or not request.user.is_authenticated
|
||||
or not request.user.is_staff
|
||||
):
|
||||
raise Http404
|
||||
|
||||
res = ''
|
||||
|
||||
from RoutesApp.search_matches import search_matches
|
||||
from RoutesApp.models import Route
|
||||
search_matches(Route.objects.filter(id=17158))
|
||||
|
||||
# from RoutesApp.funcs import get_city_by_type_transport_and_address_point
|
||||
# from RoutesApp.models import Route
|
||||
# from ReferenceDataApp.models import Airport, City
|
||||
#
|
||||
# res = None
|
||||
#
|
||||
# from_air = Airport.objects.get(iata_code='MSQ')
|
||||
# to_air = Airport.objects.get(iata_code='SVO')
|
||||
#
|
||||
# routes = [
|
||||
# Route(
|
||||
# type_transport='road',
|
||||
# departure_DT=datetime.now() + timedelta(days=7),
|
||||
# arrival_DT=datetime.now() + timedelta(days=8),
|
||||
# from_address_point=to_air.city.id,
|
||||
# to_address_point=from_air.city.id,
|
||||
# from_city=to_air.city,
|
||||
# to_city=from_air.city,
|
||||
# weight=item,
|
||||
# phone='0987654321',
|
||||
# owner=request.user
|
||||
# ) for item in range(100)
|
||||
# ]
|
||||
|
||||
# routes = [
|
||||
# Route(
|
||||
# type_transport='avia',
|
||||
@@ -62,8 +114,8 @@ def test_code(request):
|
||||
# owner = request.user
|
||||
# ) for item in range(1000)
|
||||
# ]
|
||||
|
||||
Route.objects.bulk_create(routes)
|
||||
#
|
||||
# Route.objects.bulk_create(routes)
|
||||
|
||||
|
||||
# from RoutesApp.search_matches import search_matches
|
||||
@@ -97,7 +149,52 @@ def Page404(request, exeption=None):
|
||||
except Exception as e:
|
||||
return HttpResponse(str(e))
|
||||
|
||||
def LandingMoverPage(request):
|
||||
|
||||
from .init_options import init_options
|
||||
init_options()
|
||||
|
||||
|
||||
print(f'LOCALE_PATHS = {str(settings.LOCALE_PATHS)}')
|
||||
|
||||
page, is_created = StaticPage.objects.get_or_create(url='landing_mover')
|
||||
|
||||
Dict = {
|
||||
'page': page,
|
||||
}
|
||||
|
||||
|
||||
|
||||
breadcrumbs_Dict = {
|
||||
}
|
||||
Dict.update({'breadcrumbs': breadcrumbs_Dict})
|
||||
|
||||
t = loader.get_template('pages/p_mover_landing_page.html')
|
||||
return get_inter_http_response(t, Dict, request)
|
||||
|
||||
|
||||
def LandingCustomerPage(request):
|
||||
|
||||
from .init_options import init_options
|
||||
init_options()
|
||||
|
||||
|
||||
print(f'LOCALE_PATHS = {str(settings.LOCALE_PATHS)}')
|
||||
|
||||
page, is_created = StaticPage.objects.get_or_create(url='landing_customer')
|
||||
|
||||
Dict = {
|
||||
'page': page,
|
||||
}
|
||||
|
||||
|
||||
|
||||
breadcrumbs_Dict = {
|
||||
}
|
||||
Dict.update({'breadcrumbs': breadcrumbs_Dict})
|
||||
|
||||
t = loader.get_template('pages/p_customer_landing_page.html')
|
||||
return get_inter_http_response(t, Dict, request)
|
||||
|
||||
|
||||
def MainPage(request):
|
||||
@@ -152,6 +249,12 @@ def StaticPageView(request, url):
|
||||
'route_form': RouteForm(),
|
||||
'owner_type': 'mover'
|
||||
})
|
||||
elif url in ['landing_customer', 'landing_mover']:
|
||||
raise Http404
|
||||
# return HttpResponseRedirect(reverse('customer_landing_page'))
|
||||
# elif url == 'landing_mover':
|
||||
# return HttpResponseRedirect(reverse('mover_landing_page'))
|
||||
|
||||
# elif url == 'works':
|
||||
# return WorksPage(request)
|
||||
elif url in ['main']:
|
||||
|
||||
@@ -3,7 +3,10 @@ from .models import *
|
||||
from django.contrib import admin
|
||||
|
||||
class Admin_Route(Admin_Trans_BaseModel):
|
||||
readonly_fields = ['highlight_end_DT', 'rising_DT']
|
||||
readonly_fields = [
|
||||
# 'highlight_end_DT',
|
||||
'rising_DT'
|
||||
]
|
||||
list_display = [
|
||||
'id', 'owner_type',
|
||||
'rising_DT',
|
||||
@@ -25,8 +28,8 @@ class Admin_Route(Admin_Trans_BaseModel):
|
||||
]
|
||||
|
||||
search_fields = [
|
||||
'owner__first_name', 'owner__last_name', 'from_city__name', 'to_city__name'
|
||||
'owner__first_name', 'owner__last_name', 'from_city__name', 'to_city__name', 'owner__email'
|
||||
]
|
||||
raw_id_fields = ['from_city', 'to_city']
|
||||
raw_id_fields = ['from_city', 'to_city', 'owner']
|
||||
|
||||
admin.site.register(Route,Admin_Route)
|
||||
admin.site.register(Route, Admin_Route)
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
from BaseModels.mailSender import techSendMail
|
||||
from GeneralApp.funcs_options import get_mail_send_options
|
||||
from .models import *
|
||||
from .forms import *
|
||||
from django.utils.translation import gettext as _
|
||||
@@ -170,6 +172,7 @@ def get_routes_Dict(user=None, data=None):
|
||||
'owner': user
|
||||
})
|
||||
|
||||
|
||||
from_el = None
|
||||
to_el = None
|
||||
|
||||
|
||||
@@ -305,6 +305,14 @@ def get_my_routes_ajax(request):
|
||||
data = json.loads(request.body)
|
||||
|
||||
try:
|
||||
|
||||
if not request.user or request.user.is_anonymous:
|
||||
msg = (f'get_my_routes_ajax not have user - user={str(request.user)}<br>'
|
||||
f'data={str(data)}<br>'
|
||||
f'request={str(request)}')
|
||||
mail_sets = get_mail_send_options()
|
||||
techSendMail(mail_sets, msg)
|
||||
|
||||
routes_Dict = get_routes_Dict(request.user, data)
|
||||
if 'errors' in routes_Dict:
|
||||
return JsonResponse(routes_Dict, status=400)
|
||||
|
||||
18
RoutesApp/migrations/0009_alter_route_phone.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 4.2.2 on 2024-11-12 10:51
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('RoutesApp', '0008_route_highlight_end_dt'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='route',
|
||||
name='phone',
|
||||
field=models.CharField(blank=True, null=True, verbose_name='Укажите номер для связи'),
|
||||
),
|
||||
]
|
||||
@@ -57,7 +57,7 @@ class Route(BaseModel):
|
||||
verbose_name=_('Куда можете доставить?'))
|
||||
cargo_type = models.CharField(choices=cargo_type_choices, default='parcel', verbose_name=_('Могу перевезти'))
|
||||
weight = models.IntegerField(verbose_name=_('Укажите вес до (кг)'))
|
||||
phone = models.CharField(verbose_name=_('Укажите номер для связи'))
|
||||
phone = models.CharField(verbose_name=_('Укажите номер для связи'), blank=True, null=True)
|
||||
extra_phone = models.CharField(verbose_name=_('Дополнительный номер'), blank=True, null=True)
|
||||
receive_msg_by_email = models.BooleanField(default=False, verbose_name=_('Получать уведомления по E-mail'))
|
||||
receive_msg_by_sms = models.BooleanField(default=False, verbose_name=_('Получать уведомления по SMS'))
|
||||
|
||||
@@ -47,7 +47,7 @@ def send_push_message_for_found_matches_routes(route, data_Dict):
|
||||
|
||||
|
||||
|
||||
def send_mail_found_matches_routes(route, data_Dict):
|
||||
def send_mail_found_matches_routes(route, matched_route, data_Dict):
|
||||
print(f'send_mail_found_matches_routes to route id = {route.id}')
|
||||
|
||||
Dict = {
|
||||
@@ -67,7 +67,9 @@ def send_mail_found_matches_routes(route, data_Dict):
|
||||
from_email=mail_sets['sender_email'], to=to,
|
||||
html_content=html
|
||||
)
|
||||
to = ['web@syncsystems.net']
|
||||
|
||||
subject = f'route matches {route.id} <> {matched_route.id} send to {route.owner.email}'
|
||||
to = ['web@syncsystems.net', 'sa@a3-global.com']
|
||||
res = admin_send_mail_by_SMTPlib(
|
||||
mail_sets,
|
||||
subject=subject,
|
||||
@@ -78,6 +80,56 @@ def send_mail_found_matches_routes(route, data_Dict):
|
||||
return res
|
||||
|
||||
|
||||
def user_notify_by_result_search_matches(route_for_send, founded_route, params):
|
||||
log = ''
|
||||
|
||||
data_Dict = None
|
||||
try:
|
||||
data_Dict = get_Dict_for_send_msgs(params, founded_route.owner_type)
|
||||
except Exception as e:
|
||||
msg = f'<br>\n! search_matches Error get_Dict_for_send_msgs = {str(e)}'
|
||||
print(msg)
|
||||
log += msg
|
||||
|
||||
if data_Dict and check_option_in_cur_user_subscribe(
|
||||
route_for_send.owner, 'push уведомления'
|
||||
):
|
||||
try:
|
||||
msg = send_push_message_for_found_matches_routes(route_for_send, data_Dict)
|
||||
if msg:
|
||||
log += msg
|
||||
except Exception as e:
|
||||
msg = f'<br>\n! search_matches Error send_push_message_for_found_matches_routes = {str(e)}'
|
||||
print(msg)
|
||||
log += msg
|
||||
|
||||
if data_Dict and check_option_in_cur_user_subscribe(
|
||||
route_for_send.owner,
|
||||
'уведомление на e-mail о появлении перевозчика по заданным критериям'
|
||||
):
|
||||
try:
|
||||
msg = send_mail_found_matches_routes(route_for_send, founded_route, data_Dict)
|
||||
if msg:
|
||||
log += msg
|
||||
except Exception as e:
|
||||
msg = f'<br>\n! search_matches Error send_mail_found_matches_routes = {str(e)}'
|
||||
print(msg)
|
||||
log += msg
|
||||
|
||||
return log
|
||||
|
||||
|
||||
|
||||
def users_notify_by_result_search_matches(source_route, found_routes, params):
|
||||
log = ''
|
||||
log += user_notify_by_result_search_matches(source_route, found_routes[0], params)
|
||||
|
||||
for route in found_routes:
|
||||
log += user_notify_by_result_search_matches(route, source_route, params)
|
||||
|
||||
return log
|
||||
|
||||
|
||||
def search_matches(for_routes=None):
|
||||
print('search_matches')
|
||||
|
||||
@@ -91,8 +143,11 @@ def search_matches(for_routes=None):
|
||||
)
|
||||
|
||||
check_fields = [
|
||||
'type_transport', 'departure_DT', 'arrival_DT', 'from_address_point', 'to_address_point',
|
||||
'from_place', 'to_place', 'cargo_type', 'weight'
|
||||
'type_transport', 'departure_DT', 'arrival_DT',
|
||||
# 'from_address_point', 'to_address_point',
|
||||
'from_place', 'to_place',
|
||||
'cargo_type', 'weight',
|
||||
'from_city', 'to_city',
|
||||
]
|
||||
|
||||
if for_routes:
|
||||
@@ -113,11 +168,20 @@ def search_matches(for_routes=None):
|
||||
kwargs.update({f"{field_name}__date": field_val.date()})
|
||||
elif field_name == 'weight':
|
||||
# print(field_name)
|
||||
params.update({f"{field_name}": field_val})
|
||||
if route.owner_type == 'mover':
|
||||
# params.update({f"{field_name}__lte": field_val})
|
||||
kwargs.update({f"{field_name}__lte": field_val})
|
||||
else:
|
||||
# params.update({f"{field_name}__gte": field_val})
|
||||
kwargs.update({f"{field_name}__gte": field_val})
|
||||
elif field_name == 'from_city':
|
||||
params.update({'from_address_point': field_val.id})
|
||||
kwargs.update({field_name: field_val})
|
||||
elif field_name == 'to_city':
|
||||
params.update({'to_address_point': field_val.id})
|
||||
kwargs.update({field_name: field_val})
|
||||
# elif field_name in ['from_address_point', 'to_address_point']:
|
||||
# kwargs.update({field_name: field_val})
|
||||
else:
|
||||
kwargs.update({field_name: field_val})
|
||||
params.update({field_name: field_val})
|
||||
@@ -135,39 +199,9 @@ def search_matches(for_routes=None):
|
||||
|
||||
if found_routes:
|
||||
msg = f'found routes for send messages = {found_routes.count()}'
|
||||
print(msg)
|
||||
|
||||
data_Dict = None
|
||||
try:
|
||||
data_Dict = get_Dict_for_send_msgs(params, found_routes[0].owner_type)
|
||||
except Exception as e:
|
||||
msg = f'<br>\n! search_matches Error get_Dict_for_send_msgs = {str(e)}'
|
||||
print(msg)
|
||||
log += msg
|
||||
|
||||
if data_Dict and check_option_in_cur_user_subscribe(
|
||||
route.owner, 'push уведомления'
|
||||
):
|
||||
try:
|
||||
msg = send_push_message_for_found_matches_routes(route, data_Dict)
|
||||
if msg:
|
||||
log += msg
|
||||
except Exception as e:
|
||||
msg = f'<br>\n! search_matches Error send_push_message_for_found_matches_routes = {str(e)}'
|
||||
print(msg)
|
||||
log += msg
|
||||
|
||||
if data_Dict and check_option_in_cur_user_subscribe(
|
||||
route.owner,
|
||||
'уведомление на e-mail о появлении перевозчика по заданным критериям'
|
||||
):
|
||||
try:
|
||||
msg = send_mail_found_matches_routes(route, data_Dict)
|
||||
if msg:
|
||||
log += msg
|
||||
except Exception as e:
|
||||
msg = f'<br>\n! search_matches Error send_mail_found_matches_routes = {str(e)}'
|
||||
print(msg)
|
||||
log += msg
|
||||
log += users_notify_by_result_search_matches(route, found_routes, params)
|
||||
|
||||
except Exception as e:
|
||||
msg = f'<br>\n! search_matches Error = {str(e)}'
|
||||
|
||||
@@ -99,6 +99,6 @@ class Admin_SubscribeForUser(Admin_Trans_BaseModel):
|
||||
'modifiedDT', 'createDT'
|
||||
]
|
||||
list_editable = ['enable']
|
||||
search_fields = ['name']
|
||||
search_fields = ['name', 'id', 'user__email', 'user__first_name', 'user__last_name']
|
||||
|
||||
admin.site.register(SubscribeForUser,Admin_SubscribeForUser)
|
||||
14
SubscribesApp/migrations/0008_merge_20250217_1748.py
Normal file
@@ -0,0 +1,14 @@
|
||||
# Generated by Django 4.2.2 on 2025-02-17 17:48
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('SubscribesApp', '0004_alter_subscribe_bg_color_alter_subscribe_text_color'),
|
||||
('SubscribesApp', '0007_subscribeoption_route_highlight_hours'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
]
|
||||
@@ -1,5 +1,5 @@
|
||||
User-agent: *
|
||||
Disallow: /
|
||||
Allow: /
|
||||
Disallow: */admin/*
|
||||
|
||||
Host: dev.tripwb.com
|
||||
Host: tripwb.com
|
||||
@@ -1,6 +1,10 @@
|
||||
from BaseModels.admin_utils import Admin_GenericBaseIconStackedInline, Admin_BaseIconModel, GenericStackedInline
|
||||
from BaseModels.admin_utils import (
|
||||
Admin_GenericBaseIconStackedInline, Admin_BaseIconModel, GenericStackedInline,
|
||||
AdminImageWidget, get_image_thumb
|
||||
)
|
||||
from copy import deepcopy
|
||||
|
||||
from django.db import models
|
||||
from django.utils.translation import gettext as _
|
||||
|
||||
|
||||
class Admin_BaseModel(Admin_BaseIconModel):
|
||||
@@ -86,12 +90,17 @@ class AdminTranslationBase(TranslationAdmin):
|
||||
'screen': ('modeltranslation/css/tabbed_translation_fields.css',),
|
||||
}
|
||||
|
||||
from modeltranslation.admin import TranslationGenericStackedInline
|
||||
class AdminStacked_FAQitem(TranslationGenericStackedInline):
|
||||
from GeneralApp.models import FAQitem
|
||||
model = FAQitem
|
||||
extra = 0
|
||||
fields = ['order', 'question', 'answer']
|
||||
from modeltranslation.admin import TranslationGenericStackedInline, TranslationGenericTabularInline
|
||||
class TranslationGenericTabularInlineCustom(TranslationGenericTabularInline):
|
||||
formfield_overrides = {
|
||||
models.ImageField: {'widget': AdminImageWidget},
|
||||
}
|
||||
|
||||
def image_thumb(self, obj):
|
||||
return get_image_thumb(self, obj)
|
||||
|
||||
image_thumb.short_description = _('Миниатюра')
|
||||
image_thumb.allow_tags = True
|
||||
|
||||
class Media:
|
||||
|
||||
@@ -105,6 +114,46 @@ class AdminStacked_FAQitem(TranslationGenericStackedInline):
|
||||
'screen': ('modeltranslation/css/tabbed_translation_fields.css',),
|
||||
}
|
||||
|
||||
class TranslationGenericStackedInlineCustom(TranslationGenericStackedInline):
|
||||
formfield_overrides = {
|
||||
models.ImageField: {'widget': AdminImageWidget},
|
||||
}
|
||||
|
||||
def image_thumb(self, obj):
|
||||
return get_image_thumb(self, obj)
|
||||
|
||||
image_thumb.short_description = _('Миниатюра')
|
||||
image_thumb.allow_tags = True
|
||||
|
||||
class Media:
|
||||
|
||||
js = (
|
||||
'modeltranslation/js/force_jquery.js',
|
||||
'http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js',
|
||||
'http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js',
|
||||
'modeltranslation/js/tabbed_translation_fields.js',
|
||||
)
|
||||
css = {
|
||||
'screen': ('modeltranslation/css/tabbed_translation_fields.css',),
|
||||
}
|
||||
|
||||
|
||||
class AdminStacked_FAQitem(TranslationGenericStackedInlineCustom):
|
||||
from GeneralApp.models import FAQitem
|
||||
model = FAQitem
|
||||
extra = 0
|
||||
fields = ['order', 'question', 'answer']
|
||||
|
||||
|
||||
|
||||
class AdminTabular_Mediaitem(TranslationGenericTabularInlineCustom):
|
||||
from GeneralApp.models import MediaItem
|
||||
model = MediaItem
|
||||
extra = 0
|
||||
fields = ['order', 'video', 'picture']
|
||||
|
||||
|
||||
|
||||
class Admin_BaseModelViewPage(Admin_BaseIconModel):
|
||||
pass
|
||||
# def get_fieldsets(self, request, obj=None):
|
||||
@@ -129,7 +178,7 @@ class Admin_BaseModelViewPage(Admin_BaseIconModel):
|
||||
# else:
|
||||
# return {}
|
||||
#
|
||||
inlines = [AdminStacked_FAQitem]
|
||||
inlines = [AdminStacked_FAQitem, AdminTabular_Mediaitem]
|
||||
|
||||
|
||||
|
||||
|
||||
2
static/css/moover.css
Normal file
178
static/css/moover/about.css
Normal file
@@ -0,0 +1,178 @@
|
||||
.about {
|
||||
margin-bottom: 168px;
|
||||
}
|
||||
|
||||
@media (min-width: 1720px) {
|
||||
.about {
|
||||
margin-bottom: 188px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1304.98px) {
|
||||
.about {
|
||||
margin-bottom: 138px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.about {
|
||||
margin-bottom: 110px;
|
||||
}
|
||||
}
|
||||
|
||||
.about .title {
|
||||
margin-bottom: 60px;
|
||||
}
|
||||
|
||||
@media (min-width: 1720px) {
|
||||
.about .title {
|
||||
margin-bottom: 49px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1304.98px) {
|
||||
.about .title {
|
||||
margin-bottom: 39px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.about .title {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 479.98px) {
|
||||
.about .title {
|
||||
margin-bottom: 37px;
|
||||
}
|
||||
}
|
||||
|
||||
.about__grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.about__grid {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
.about__img {
|
||||
box-shadow: inset 18.19px 1.21px 18.19px 0 #FFFFFFCC, inset -18.19px -1.21px 18.19px 0 #4052801A, 48.5px 36.38px 36.38px 0 #6B7F9933;
|
||||
border-radius: 31px;
|
||||
margin-left: -20px;
|
||||
margin-top: 8px;
|
||||
}
|
||||
|
||||
@media (min-width: 1720px) {
|
||||
.about__img {
|
||||
margin-top: 19px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1304.98px) {
|
||||
.about__img {
|
||||
margin-left: -10px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.about__img {
|
||||
margin-left: 0;
|
||||
margin-bottom: 49px;
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 479.98px) {
|
||||
.about__img {
|
||||
margin-bottom: 38px;
|
||||
}
|
||||
}
|
||||
|
||||
.about__right {
|
||||
text-align: left;
|
||||
padding-top: 43px;
|
||||
padding-left: 50px;
|
||||
}
|
||||
|
||||
@media (min-width: 1720px) {
|
||||
.about__right {
|
||||
padding-top: 90px;
|
||||
padding-left: 21px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1304.98px) {
|
||||
.about__right {
|
||||
padding-left: 11px;
|
||||
padding-top: 19px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.about__right {
|
||||
padding: 0 8px;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 479.98px) {
|
||||
.about__right {
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.about__right::after {
|
||||
content: '';
|
||||
display: block;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.about__half {
|
||||
max-width: 50%;
|
||||
float: left;
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.about__half {
|
||||
max-width: initial;
|
||||
}
|
||||
}
|
||||
|
||||
.about__half:last-child {
|
||||
padding-left: 16px;
|
||||
max-width: 47%;
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.about__half:last-child {
|
||||
max-width: initial;
|
||||
padding-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.about b {
|
||||
letter-spacing: 0.4px;
|
||||
}
|
||||
|
||||
@media (min-width: 1720px) {
|
||||
.about b {
|
||||
font-weight: 700;
|
||||
letter-spacing: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 479.98px) {
|
||||
.about b {
|
||||
letter-spacing: 0.9px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1720px) {
|
||||
.about p {
|
||||
margin-bottom: 39px;
|
||||
}
|
||||
}
|
||||
1
static/css/moover/animate.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.animate{padding:60px 40px 49px;opacity:0;background-color:var(--color-black2);border-radius:30px;color:white;margin-bottom:160px}@media (min-width: 1720px){.animate{padding-top:100px;padding-bottom:89px;margin-bottom:180px}}@media (max-width: 1304.98px){.animate{margin-bottom:141px}}@media (max-width: 991.98px){.animate{padding-top:40px;padding-bottom:29px;margin-bottom:121px}}@media (max-width: 479.98px){.animate{padding:30px 7px 19px}}.animate.left{transform:scale(0);opacity:0}.animate.right{opacity:0;transform:scale(0)}.animate.right .title{margin-bottom:17px}@media (min-width: 1720px){.animate.right .title{max-width:80%;margin-bottom:40px}}@media (max-width: 1304.98px){.animate.right .title{margin-bottom:25px}}@media (max-width: 991.98px){.animate.right .title{margin-bottom:31px}}@media (max-width: 479.98px){.animate.right .title{margin-bottom:20px}}@media (max-width: 991.98px){.animate.right .subtitle{margin-bottom:31px}}@media (max-width: 479.98px){.animate.right .use__btn{margin-top:-11px}}.animate__link{color:var(--color-orange);text-decoration:underline !important}.animate .title{margin-bottom:25px;max-width:87%}@media (min-width: 1720px){.animate .title{margin-bottom:40px}}@media (max-width: 1304.98px){.animate .title{max-width:99%}}@media (max-width: 991.98px){.animate .title{max-width:85%;font-size:24px;line-height:29.05px}}@media (max-width: 767.98px){.animate .title{max-width:100%;margin-bottom:14px}}.animate .subtitle{width:47%;margin:0 auto 23px}@media (min-width: 1720px){.animate .subtitle{line-height:26px;letter-spacing:0.1px;margin-bottom:40px}}@media (max-width: 1304.98px){.animate .subtitle{width:54%}}@media (max-width: 991.98px){.animate .subtitle{width:102%;margin-bottom:26px}}@media (max-width: 479.98px){.animate .use__btn{margin-top:-6px;padding-left:15px;padding-right:15px;display:flex}}
|
||||
157
static/css/moover/benefits.css
Normal file
@@ -0,0 +1,157 @@
|
||||
.benefits {
|
||||
margin-bottom: 132px;
|
||||
}
|
||||
|
||||
@media (min-width: 1720px) {
|
||||
.benefits {
|
||||
margin-bottom: 147px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1304.98px) {
|
||||
.benefits {
|
||||
margin-bottom: 101px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.benefits {
|
||||
margin-bottom: 93px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 479.98px) {
|
||||
.benefits {
|
||||
margin-bottom: 103px;
|
||||
}
|
||||
}
|
||||
|
||||
.benefits__grid {
|
||||
text-align: left;
|
||||
display: grid;
|
||||
grid-template-columns: 1.5fr 3fr 1.5fr;
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.benefits__grid {
|
||||
grid-template-columns: 1fr 1fr;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 479.98px) {
|
||||
.benefits__grid {
|
||||
grid-template-columns: 1fr;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
.benefits__item {
|
||||
min-height: 122px;
|
||||
padding-right: 7px;
|
||||
margin-bottom: 22px;
|
||||
}
|
||||
|
||||
@media (min-width: 1720px) {
|
||||
.benefits__item {
|
||||
min-height: 145px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.benefits__item {
|
||||
padding-right: 25px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 479.98px) {
|
||||
.benefits__item {
|
||||
padding-right: 0;
|
||||
margin-bottom: 19px;
|
||||
min-height: 90px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.benefits__second {
|
||||
grid-column: 1 / 3;
|
||||
order: -1;
|
||||
margin-bottom: 56px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 479.98px) {
|
||||
.benefits__second {
|
||||
grid-column: 1/2;
|
||||
margin-bottom: 31px;
|
||||
}
|
||||
}
|
||||
|
||||
.benefits__third {
|
||||
padding-left: 16px;
|
||||
}
|
||||
|
||||
@media (min-width: 1720px) {
|
||||
.benefits__third {
|
||||
padding-left: 31px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.benefits__third {
|
||||
padding-left: 11px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 479.98px) {
|
||||
.benefits__third {
|
||||
padding-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.benefits .title {
|
||||
margin-bottom: 76px;
|
||||
}
|
||||
|
||||
@media (min-width: 1720px) {
|
||||
.benefits .title {
|
||||
margin-bottom: 93px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.benefits .title {
|
||||
margin-bottom: 19px;
|
||||
}
|
||||
}
|
||||
|
||||
.benefits img {
|
||||
position: relative;
|
||||
top: 14px;
|
||||
right: -11px;
|
||||
}
|
||||
|
||||
@media (min-width: 1720px) {
|
||||
.benefits img {
|
||||
top: -33px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1304.98px) {
|
||||
.benefits img {
|
||||
top: 20px;
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1720px) {
|
||||
.benefits h2 {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 479.98px) {
|
||||
.benefits p {
|
||||
margin-bottom: 13px;
|
||||
}
|
||||
}
|
||||
194
static/css/moover/cards.css
Normal file
@@ -0,0 +1,194 @@
|
||||
.cards__list {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
}
|
||||
|
||||
.cards__item {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.cards__item {
|
||||
max-width: 270px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 767.98px) {
|
||||
.cards__item {
|
||||
max-width: 251px;
|
||||
margin-right: 18px;
|
||||
}
|
||||
}
|
||||
|
||||
.slick-active .cards__item .cards__desc, .cards__item:hover .cards__desc, .cards__item:focus .cards__desc {
|
||||
-webkit-line-clamp: initial;
|
||||
/* number of lines to show */
|
||||
line-clamp: initial;
|
||||
max-height: 17em;
|
||||
}
|
||||
|
||||
.cards__img {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
@media (min-width: 1720px) {
|
||||
.cards__img {
|
||||
width: 100%;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1304.98px) {
|
||||
.cards__img {
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.cards__img {
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 767.98px) {
|
||||
.cards__img {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.cards__img:hover {
|
||||
scale: 1.05;
|
||||
transition: scale 0.15s linear;
|
||||
}
|
||||
|
||||
.cards__desc {
|
||||
font-weight: 500;
|
||||
line-height: 22px;
|
||||
padding: 0 5px;
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 7;
|
||||
/* number of lines to show */
|
||||
line-clamp: 7;
|
||||
-webkit-box-orient: vertical;
|
||||
transition: all 0.3s ease-in-out;
|
||||
max-height: 10em;
|
||||
}
|
||||
|
||||
@media (min-width: 1720px) {
|
||||
.cards__desc {
|
||||
font-size: 20px;
|
||||
line-height: 26px;
|
||||
padding-left: 20px;
|
||||
padding-right: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1279.98px) {
|
||||
.cards__desc {
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
margin-bottom: 3px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.cards__desc {
|
||||
padding-left: 8px;
|
||||
padding-right: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
.slick-active .cards__desc, .cards__desc:hover, .cards__desc:focus {
|
||||
-webkit-line-clamp: initial;
|
||||
/* number of lines to show */
|
||||
line-clamp: initial;
|
||||
max-height: 999em;
|
||||
}
|
||||
|
||||
.cards__desc a {
|
||||
color: var(--color-orange);
|
||||
}
|
||||
|
||||
.cards__arrow {
|
||||
width: 62px;
|
||||
height: 20px;
|
||||
position: absolute;
|
||||
right: -30px;
|
||||
top: -21px;
|
||||
background-image: url("/static/img/svg/Arrow23.svg");
|
||||
}
|
||||
|
||||
@media (min-width: 1720px) {
|
||||
.cards__arrow {
|
||||
right: -45px;
|
||||
top: -29px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1304.98px) {
|
||||
.cards__arrow {
|
||||
top: -8%;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.cards__arrow {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.cards .slick-list {
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
@media (max-width: 767.98px) {
|
||||
.cards .slick-list {
|
||||
margin-bottom: 1px;
|
||||
padding-left: 58px;
|
||||
}
|
||||
}
|
||||
|
||||
.cards .slick-dots {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
margin: 0;
|
||||
padding: 1rem 0;
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
.cards .slick-dots li {
|
||||
margin: 0 0.25rem;
|
||||
}
|
||||
|
||||
@media (max-width: 767.98px) {
|
||||
.cards .slick-dots li {
|
||||
margin: 0 0.31rem;
|
||||
}
|
||||
}
|
||||
|
||||
.cards .slick-dots button {
|
||||
display: block;
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
padding: 0;
|
||||
border: none;
|
||||
border-radius: 100%;
|
||||
background-color: #D9D9D9;
|
||||
text-indent: -9999px;
|
||||
}
|
||||
|
||||
.cards .slick-dots li.slick-active button {
|
||||
background-color: var(--color-orange);
|
||||
}
|
||||
|
||||
.cards--cstmr .cards__desc {
|
||||
padding: 0 50px;
|
||||
}
|
||||
|
||||
@media (max-width: 1304.98px) {
|
||||
.cards--cstmr .cards__desc {
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
}
|
||||
}
|
||||
1
static/css/moover/chatterbox.css
Normal file
@@ -0,0 +1 @@
|
||||
.chatterbox{margin-bottom:160px}@media (min-width: 1720px){.chatterbox{margin-bottom:180px}}@media (max-width: 1304.98px){.chatterbox{margin-bottom:142px}}@media (max-width: 991.98px){.chatterbox{margin-left:-50vw;margin-right:-50vw;margin-bottom:122px}}@media (max-width: 767.98px){.chatterbox{max-width:100vw;margin:0 auto 121px;position:relative}}.chatterbox__slider{max-width:1200px;margin:0 auto}@media (min-width: 1720px){.chatterbox__slider{max-width:1640px}}@media (max-width: 1304.98px){.chatterbox__slider{max-width:1100px}}@media (max-width: 991.98px){.chatterbox__slider{max-width:720px}}@media (max-width: 767.98px){.chatterbox__slider{max-width:830px;width:830px;left:50%;transform:translateX(-50%)}}@media (max-width: 479.98px){.chatterbox__slider{max-width:initial}}.chatterbox__slide{width:335px;height:615px;background:url("/static/img/webp/phone-border.webp") center no-repeat;transition:scale 0.2s ease-in-out;margin:auto;position:relative}@media (min-width: 1720px){.chatterbox__slide{width:456px;height:836px;background-size:456px 836px}}@media (max-width: 1304.98px){.chatterbox__slide{width:308px;height:565px;background-size:308px 565px}}@media (max-width: 991.98px){.chatterbox__slide{width:206px;height:377px;background-size:206px 377px}}@media (max-width: 767.98px){.chatterbox__slide{width:234px;height:429px;background-size:234px 429px}}.chatterbox__slide.loaded video{opacity:1}.chatterbox__slide.loaded img{z-index:-10}.chatterbox__slide video{max-width:100%;opacity:0;transition:opacity 0.2s ease-in-out;pointer-events:none;position:relative}@media (min-width: 1720px){.chatterbox__slide video{top:-2px}}@media (max-width: 1304.98px){.chatterbox__slide video{top:10px}}@media (max-width: 991.98px){.chatterbox__slide video{top:-4px}}@media (max-width: 767.98px){.chatterbox__slide video{top:22px}}.chatterbox__slide img{position:absolute;scale:1.32;top:11%}.chatterbox__wrap{position:absolute;left:8px;right:8px;top:8px;bottom:8px;border-radius:25px;background-color:grey;overflow:hidden}@media (min-width: 1720px){.chatterbox__wrap{border-radius:50px}}.chatterbox__vbtn{position:absolute;left:0;right:0;top:0;bottom:0;opacity:0;transition:opacity 0.2s ease-in-out;pointer-events:none}.loaded .chatterbox__vbtn{display:none}.chatterbox__vbtn::before{width:80px;height:80px;display:flex;align-items:center;justify-content:center;background:var(--color-primary);border:0;border-radius:50%;transition:opacity 100ms linear}@media (min-width: 1720px){.chatterbox__vbtn::before{width:109px;height:109px}}@media (max-width: 991.98px){.chatterbox__vbtn::before{width:48px;height:48px}}@media (max-width: 767.98px){.chatterbox__vbtn::before{width:55px;height:55px}}.chatterbox__vbtn::before,.chatterbox__vbtn::after{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%, -50%);cursor:pointer}.chatterbox__vbtn::after{border-color:transparent transparent transparent #ffffff;border-style:solid;border-width:15px 0 15px 25px;display:inline-block;margin-left:2px}@media (min-width: 1720px){.chatterbox__vbtn::after{border-width:23px 0 23px 35px;margin-left:4px}}@media (max-width: 991.98px){.chatterbox__vbtn::after{border-width:10px 0 10px 14px}}.chatterbox__vbox{position:relative;display:flex;justify-content:center;align-items:center;height:600px}@media (min-width: 1720px){.chatterbox__vbox{height:827px}}@media (max-width: 1304.98px){.chatterbox__vbox{height:530px}}@media (max-width: 991.98px){.chatterbox__vbox{height:370px}}.chatterbox__mbtns{position:absolute;top:58%;transform:translateY(-50%);left:0;right:0}@media (max-width: 479.98px){.chatterbox__mbtns{top:61.6%}}.chatterbox .title{margin-bottom:60px}@media (max-width: 1304.98px){.chatterbox .title{margin-bottom:39px}}@media (max-width: 767.98px){.chatterbox .title{margin-bottom:50px}}.chatterbox .slick-next{right:-40px}@media (max-width: 1304.98px){.chatterbox .slick-next{right:-10px}}@media (max-width: 991.98px){.chatterbox .slick-next{width:40px;height:40px;background-size:32%;right:5%}}@media (max-width: 479.98px){.chatterbox .slick-next{right:0}}.chatterbox .slick-prev{left:-40px}@media (max-width: 1304.98px){.chatterbox .slick-prev{left:-10px}}@media (max-width: 991.98px){.chatterbox .slick-prev{width:40px;height:40px;background-size:32%;left:5%}}@media (max-width: 479.98px){.chatterbox .slick-prev{left:0}}@media (max-width: 991.98px){.chatterbox .slick-list{overflow:visible}}.slick-slide:not(.slick-center) .chatterbox__slide{scale:0.72}@media (max-width: 1304.98px){.slick-slide:not(.slick-center) .chatterbox__slide{scale:0.69}}@media (max-width: 991.98px){.slick-slide:not(.slick-center) .chatterbox__slide{scale:0.8}}@media (max-width: 479.98px){.slick-slide:not(.slick-center) .chatterbox__slide{scale:0.85}}.slick-center .chatterbox__vbtn{opacity:1;pointer-events:initial;z-index:1}.slick-center .chatterbox__vbox video{pointer-events:initial;cursor:pointer}
|
||||
347
static/css/moover/diff.css
Normal file
@@ -0,0 +1,347 @@
|
||||
.diff {
|
||||
margin-bottom: 179px;
|
||||
}
|
||||
|
||||
@media (min-width: 1720px) {
|
||||
.diff {
|
||||
margin-bottom: 172px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1304.98px) {
|
||||
.diff {
|
||||
margin-bottom: 140px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.diff {
|
||||
margin-bottom: 125px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 767.98px) {
|
||||
.diff {
|
||||
margin-bottom: 139px;
|
||||
}
|
||||
}
|
||||
|
||||
.diff .title {
|
||||
width: 60%;
|
||||
margin-bottom: 65px;
|
||||
}
|
||||
|
||||
@media (min-width: 1720px) {
|
||||
.diff .title {
|
||||
width: 49%;
|
||||
margin-bottom: 60px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1304.98px) {
|
||||
.diff .title {
|
||||
width: 73%;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.diff .title {
|
||||
width: 90%;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 767.98px) {
|
||||
.diff .title {
|
||||
width: 100%;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
}
|
||||
|
||||
.diff__grid {
|
||||
display: flex;
|
||||
position: relative;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.diff__grid::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
height: 96%;
|
||||
width: 5px;
|
||||
border-radius: 5px;
|
||||
background-color: #EDEDED;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
@media (max-width: 1304.98px) {
|
||||
.diff__grid::before {
|
||||
height: 90%;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.diff__grid::before {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.diff__grid {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
.diff__coll {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.diff__coll {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.diff__coll.left {
|
||||
margin-right: 29px;
|
||||
}
|
||||
|
||||
@media (min-width: 1720px) {
|
||||
.diff__coll.left {
|
||||
margin-right: 12px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1304.98px) {
|
||||
.diff__coll.left {
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.diff__coll.left {
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.diff__coll.left .diff__coll-title {
|
||||
padding-left: 39px;
|
||||
}
|
||||
|
||||
@media (min-width: 1720px) {
|
||||
.diff__coll.left .diff__coll-title {
|
||||
padding-left: 2px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1304.98px) {
|
||||
.diff__coll.left .diff__coll-title {
|
||||
padding-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.diff__coll.left .diff__coll-title {
|
||||
padding-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.diff__coll.right {
|
||||
margin-left: 29px;
|
||||
}
|
||||
|
||||
@media (max-width: 1304.98px) {
|
||||
.diff__coll.right {
|
||||
margin-left: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.diff__coll.right {
|
||||
margin-left: 0;
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.diff__coll.right .diff__coll-title {
|
||||
padding-right: 39px;
|
||||
}
|
||||
|
||||
@media (min-width: 1720px) {
|
||||
.diff__coll.right .diff__coll-title {
|
||||
padding-right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1304.98px) {
|
||||
.diff__coll.right .diff__coll-title {
|
||||
padding-right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.diff__coll.right .diff__coll-title {
|
||||
padding-right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.diff__coll-title {
|
||||
margin-bottom: 38px;
|
||||
}
|
||||
|
||||
@media (max-width: 1304.98px) {
|
||||
.diff__coll-title {
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.diff__coll-title {
|
||||
margin-bottom: 19px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 767.98px) {
|
||||
.diff__coll-title {
|
||||
margin-bottom: 29px;
|
||||
}
|
||||
}
|
||||
|
||||
.diff__item {
|
||||
position: relative;
|
||||
text-align: left;
|
||||
padding-left: 10px;
|
||||
padding-top: 11px;
|
||||
padding-bottom: 11px;
|
||||
display: flex;
|
||||
gap: 11px;
|
||||
align-items: center;
|
||||
background-color: #FFFFFF;
|
||||
border-radius: 15px;
|
||||
font-weight: 500;
|
||||
font-size: 20px;
|
||||
line-height: 28px;
|
||||
margin-bottom: 35px;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
@media (min-width: 1720px) {
|
||||
.diff__item {
|
||||
padding: 20px;
|
||||
gap: 20px;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1304.98px) {
|
||||
.diff__item {
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.diff__item {
|
||||
font-size: 18px;
|
||||
margin-bottom: 25px;
|
||||
padding-bottom: 9px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 767.98px) {
|
||||
.diff__item {
|
||||
font-size: 16px;
|
||||
line-height: 19.36px;
|
||||
padding-right: 15px;
|
||||
margin-bottom: 14px;
|
||||
}
|
||||
}
|
||||
|
||||
.diff__item:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.diff__item:hover .diff__status::before {
|
||||
scale: 1.2;
|
||||
}
|
||||
|
||||
.diff__status {
|
||||
position: relative;
|
||||
height: 48px;
|
||||
width: 48px;
|
||||
border-radius: 5px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
@media (min-width: 1720px) {
|
||||
.diff__status {
|
||||
border-radius: 12px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1304.98px) {
|
||||
.diff__status {
|
||||
border-radius: 13px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.diff__status {
|
||||
border-radius: 11px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 767.98px) {
|
||||
.diff__status {
|
||||
width: 35px;
|
||||
height: 35px;
|
||||
}
|
||||
}
|
||||
|
||||
.diff__status::before {
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
transform-origin: 0% 15%;
|
||||
}
|
||||
|
||||
.diff__status::before {
|
||||
content: '';
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
}
|
||||
|
||||
.diff__item--done .diff__status {
|
||||
background-color: #CCF9D9;
|
||||
}
|
||||
|
||||
.diff__item--done .diff__status::before {
|
||||
width: 26px;
|
||||
height: 26px;
|
||||
background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjYiIGhlaWdodD0iMjYiIHZpZXdCb3g9IjAgMCAyNiAyNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTI0IDJMOS4zMzMzMyAyNEwyIDEzLjAwMDUiIHN0cm9rZT0iIzQ1QzIyNiIgc3Ryb2tlLXdpZHRoPSI0IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9zdmc+Cg==);
|
||||
}
|
||||
|
||||
@media (max-width: 767.98px) {
|
||||
.diff__item--done .diff__status::before {
|
||||
scale: 0.7;
|
||||
}
|
||||
}
|
||||
|
||||
.diff__item--error .diff__status {
|
||||
background-color: #F9CCCC;
|
||||
}
|
||||
|
||||
.diff__item--error .diff__status::before {
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzYiIGhlaWdodD0iMzYiIHZpZXdCb3g9IjAgMCAzNiAzNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTI4LjEyNSA3Ljg3NUw3Ljg3NSAyOC4xMjUiIHN0cm9rZT0iI0ZGMDAwMCIgc3Ryb2tlLXdpZHRoPSI0IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTI4LjEyNSAyOC4xMjVMNy44NzUgNy44NzUiIHN0cm9rZT0iI0ZGMDAwMCIgc3Ryb2tlLXdpZHRoPSI0IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9zdmc+Cg==);
|
||||
}
|
||||
|
||||
@media (max-width: 767.98px) {
|
||||
.diff__item--error .diff__status::before {
|
||||
scale: 0.7;
|
||||
}
|
||||
}
|
||||
418
static/css/moover/easy.css
Normal file
@@ -0,0 +1,418 @@
|
||||
.easy {
|
||||
margin-bottom: 162px;
|
||||
}
|
||||
|
||||
@media (min-width: 1720px) {
|
||||
.easy {
|
||||
margin-bottom: 180px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1304.98px) {
|
||||
.easy {
|
||||
margin-bottom: 140px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.easy {
|
||||
margin-bottom: 121px;
|
||||
}
|
||||
}
|
||||
|
||||
.easy .title {
|
||||
max-width: 55%;
|
||||
margin-bottom: 21px;
|
||||
}
|
||||
|
||||
@media (min-width: 1720px) {
|
||||
.easy .title {
|
||||
max-width: 45%;
|
||||
margin-bottom: 23px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.easy .title {
|
||||
max-width: 75%;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 767.98px) {
|
||||
.easy .title {
|
||||
max-width: 95%;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
}
|
||||
|
||||
.easy .subtitle {
|
||||
margin-bottom: 41px;
|
||||
}
|
||||
|
||||
@media (min-width: 1720px) {
|
||||
.easy .subtitle {
|
||||
margin-bottom: 59px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 767.98px) {
|
||||
.easy .subtitle {
|
||||
max-width: 90%;
|
||||
margin: 0 auto 23px;
|
||||
}
|
||||
}
|
||||
|
||||
.easy__grid {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
grid-template-rows: repeat(2, minmax(186px, auto));
|
||||
grid-template-areas: 'a b' 'a c';
|
||||
grid-column-gap: 20px;
|
||||
grid-row-gap: 80px;
|
||||
margin-bottom: 46px;
|
||||
}
|
||||
|
||||
@media (min-width: 1720px) {
|
||||
.easy__grid {
|
||||
grid-column-gap: 147px;
|
||||
grid-template-rows: repeat(2, minmax(245px, auto));
|
||||
grid-row-gap: 136px;
|
||||
margin-bottom: 63px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1304.98px) {
|
||||
.easy__grid {
|
||||
grid-column-gap: 69px;
|
||||
grid-template-rows: repeat(2, minmax(172px, auto));
|
||||
margin-bottom: 41px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.easy__grid {
|
||||
display: block;
|
||||
margin-bottom: 37px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 767.98px) {
|
||||
.easy__grid {
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
}
|
||||
|
||||
.easy__item {
|
||||
border-radius: 30px;
|
||||
background-color: var(--color-grey);
|
||||
/*background-color: #a72525;*/
|
||||
text-align: left;
|
||||
padding: 21px;
|
||||
box-shadow: var(--box-shadow-primary);
|
||||
}
|
||||
|
||||
.easy__item--fir {
|
||||
grid-area: a;
|
||||
margin-right: 60px;
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
@media (min-width: 1720px) {
|
||||
.easy__item--fir {
|
||||
margin-right: -10px;
|
||||
padding-top: 31px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1304.98px) {
|
||||
.easy__item--fir {
|
||||
margin-right: 13px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.easy__item--fir {
|
||||
padding-top: 17px;
|
||||
margin-right: 0;
|
||||
margin-bottom: 49px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 767.98px) {
|
||||
.easy__item--fir {
|
||||
margin-bottom: 42px;
|
||||
}
|
||||
}
|
||||
|
||||
.easy__item--fir p {
|
||||
width: 93%;
|
||||
margin-bottom: 29px;
|
||||
}
|
||||
|
||||
@media (min-width: 1720px) {
|
||||
.easy__item--fir p {
|
||||
width: 89%;
|
||||
margin-bottom: 53px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.easy__item--fir p {
|
||||
max-width: 78%;
|
||||
}
|
||||
}
|
||||
|
||||
.easy__item--sec {
|
||||
grid-area: b;
|
||||
position: relative;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 0;
|
||||
padding-top: 0;
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
@media (min-width: 1720px) {
|
||||
.easy__item--sec {
|
||||
padding-left: 15px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.easy__item--sec {
|
||||
padding-top: 35px;
|
||||
padding-bottom: 37px;
|
||||
margin-bottom: 46px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 767.98px) {
|
||||
.easy__item--sec {
|
||||
display: block;
|
||||
padding-top: 0;
|
||||
padding-bottom: 0;
|
||||
margin-bottom: 49px;
|
||||
}
|
||||
}
|
||||
|
||||
.easy__item--sec img {
|
||||
margin-bottom: -10px;
|
||||
margin-right: -5px;
|
||||
max-width: 50.1%;
|
||||
}
|
||||
|
||||
@media (min-width: 1720px) {
|
||||
.easy__item--sec img {
|
||||
max-width: 53%;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1304.98px) {
|
||||
.easy__item--sec img {
|
||||
max-width: 42%;
|
||||
margin-bottom: -4px;
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.easy__item--sec img {
|
||||
margin-right: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 767.98px) {
|
||||
.easy__item--sec img {
|
||||
max-width: 104%;
|
||||
position: relative;
|
||||
left: -6px;
|
||||
top: -4px;
|
||||
}
|
||||
}
|
||||
|
||||
.easy__item--sec p {
|
||||
margin-bottom: 0;
|
||||
padding-top: 0;
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
@media (max-width: 767.98px) {
|
||||
.easy__item--sec p {
|
||||
margin-bottom: 22px;
|
||||
}
|
||||
}
|
||||
|
||||
.easy__item--thr {
|
||||
grid-area: c;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 0;
|
||||
padding-top: 0;
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
@media (min-width: 1720px) {
|
||||
.easy__item--thr {
|
||||
padding-left: 15px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.easy__item--thr {
|
||||
padding-top: 42px;
|
||||
padding-bottom: 46px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 767.98px) {
|
||||
.easy__item--thr {
|
||||
display: block;
|
||||
padding-top: 0;
|
||||
padding-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.easy__item--thr .img {
|
||||
margin-bottom: -10px;
|
||||
margin-right: 24px;
|
||||
max-width: 80%;
|
||||
}
|
||||
|
||||
@media (max-width: 1279.98px) {
|
||||
.easy__item--thr .img {
|
||||
max-width: 35%;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1304.98px) {
|
||||
.easy__item--thr .img {
|
||||
margin-right: 2px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.easy__item--thr .img {
|
||||
margin-right: 0;
|
||||
max-width: 34%;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 767.98px) {
|
||||
.easy__item--thr .img img {
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
}
|
||||
}
|
||||
|
||||
.easy__item--thr p {
|
||||
max-width: 50%;
|
||||
margin-bottom: 0;
|
||||
padding-top: 0;
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.easy__item--thr p {
|
||||
max-width: 60%;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 767.98px) {
|
||||
.easy__item--thr p {
|
||||
margin-bottom: 22px;
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.easy__arrow {
|
||||
width: 68px;
|
||||
height: 18px;
|
||||
background-image: url("/static/img/svg/Arrow08.svg");
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
@media (min-width: 1720px) {
|
||||
.easy__arrow {
|
||||
scale: 1.4;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1304.98px) {
|
||||
.easy__arrow {
|
||||
scale: 0.8;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.easy__arrow {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.easy__arrow--fir {
|
||||
top: 46%;
|
||||
right: 101%;
|
||||
}
|
||||
|
||||
@media (min-width: 1720px) {
|
||||
.easy__arrow--fir {
|
||||
right: 105%;
|
||||
top: 34%;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1304.98px) {
|
||||
.easy__arrow--fir {
|
||||
top: 48%;
|
||||
}
|
||||
}
|
||||
|
||||
.easy__arrow--sec {
|
||||
top: 117%;
|
||||
left: 30%;
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
|
||||
@media (min-width: 1720px) {
|
||||
.easy__arrow--sec {
|
||||
left: 45%;
|
||||
top: 124%;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1304.98px) {
|
||||
.easy__arrow--sec {
|
||||
left: 38%;
|
||||
}
|
||||
}
|
||||
|
||||
.easy__btn {
|
||||
margin-top: -21px;
|
||||
}
|
||||
|
||||
@media (max-width: 1304.98px) {
|
||||
.easy__btn {
|
||||
margin-top: -20px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.easy__btn {
|
||||
margin-top: -19px;
|
||||
padding-left: 54px;
|
||||
padding-right: 54px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 767.98px) {
|
||||
.easy__btn {
|
||||
padding-left: 50px;
|
||||
padding-right: 50px;
|
||||
margin-top: -8px;
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
||||
1
static/css/moover/header.css
Normal file
@@ -0,0 +1 @@
|
||||
.header{margin-top:0;position:fixed;display:block;left:0;top:0;width:100vw;padding:15px 5px;transition:all 0.1s ease-in-out;background-color:white}@media (max-width: 991.98px){.header{padding-top:7px;padding-bottom:7px}}.header.scrolled{padding-top:7px;padding-bottom:7px;box-shadow:var(--box-shadow-primary);border-bottom:1px solid var(--color-grey)}.header__grid,.header__list{display:flex;align-items:center;justify-content:space-between}.header__logo{width:48px;height:48px;position:relative;left:5px}@media (max-width: 1304.98px){.header__logo{left:6px}}@media (max-width: 991.98px){.header__logo{left:0}}@media (max-width: 767.98px){.header__logo{left:-3px}}.header__nav{flex-grow:1;max-width:41%;margin-left:auto}@media (min-width: 1720px){.header__nav{max-width:34%}}@media (max-width: 1304.98px){.header__nav{max-width:46.5%}}.header__link{color:var(--color-black2);text-decoration:none}.header__btn{padding:8px 0 6px;font-size:16px;margin-left:61px;margin-right:-3px}@media (min-width: 1720px){.header__btn{margin-left:81px}}@media (max-width: 1304.98px){.header__btn{margin-right:0}}@media (max-width: 991.98px){.header__btn{display:none}}.header .dropdown{left:-4px}@media (max-width: 767.98px){.header .dropdown{left:-8px}}.header .dropdown-content{right:0;height:initial}@media (max-width: 575px){.header .dropdown-content{right:0;left:initial}}
|
||||
189
static/css/moover/presentation.css
Normal file
@@ -0,0 +1,189 @@
|
||||
.presentation {
|
||||
margin: 12px -65px 140px;
|
||||
}
|
||||
|
||||
@media (min-width: 1720px) {
|
||||
.presentation {
|
||||
margin-left: 0;
|
||||
margin-right: 0;
|
||||
margin-bottom: 160px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1304.98px) {
|
||||
.presentation {
|
||||
margin-bottom: 118px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.presentation {
|
||||
margin-bottom: 105px;
|
||||
}
|
||||
}
|
||||
|
||||
.presentation__top {
|
||||
position: relative;
|
||||
min-height: 270px;
|
||||
margin: 0 auto 116px;
|
||||
padding: 29px 0 40px;
|
||||
background-image: url(/static/img/png/Box9.png), url(/static/img/png/Box10.png), url(/static/img/png/Box11.png), url(/static/img/png/Box12.png);
|
||||
background-position: top -4px left 46px, top -30px right -14px, bottom 73px left 278px, bottom 71px right 276px;
|
||||
background-repeat: no-repeat, no-repeat, no-repeat, no-repeat;
|
||||
background-size: 17.5%, 21.8%, 8.5%, 8.8%;
|
||||
}
|
||||
|
||||
@media (min-width: 1720px) {
|
||||
.presentation__top {
|
||||
background-size: 18.5%, 22%, 9%, 10.1%;
|
||||
background-position: top -47px left 58px, top -31px right 20px, bottom 8px left 347px, bottom -5px right 352px;
|
||||
padding-top: 95px;
|
||||
margin-bottom: 176px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1304.98px) {
|
||||
.presentation__top {
|
||||
background-size: 16%, 20%, 9.5%, 10.1%;
|
||||
background-position: top -2.8% left 6.5%, top -19% right 3.5%, bottom 32% left 23%, bottom 29% right 22.6%;
|
||||
margin-bottom: 96px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.presentation__top {
|
||||
background-size: 14.5%, 17%, 8.3%, 9.1%;
|
||||
background-position: top 9% left 7%, top 5% right 6%, bottom 51% left 14.8%, bottom 47.5% right 13.8%;
|
||||
padding-top: 31px;
|
||||
margin-bottom: 76px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 767.98px) {
|
||||
.presentation__top {
|
||||
margin-bottom: 77px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.presentation__bottom .subtitle {
|
||||
max-width: 40%;
|
||||
margin: 0 auto 30px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 767.98px) {
|
||||
.presentation__bottom .subtitle {
|
||||
max-width: 65%;
|
||||
margin-bottom: 21px;
|
||||
}
|
||||
}
|
||||
|
||||
.presentation__title {
|
||||
margin-bottom: 23px;
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.presentation__title {
|
||||
max-width: 75%;
|
||||
margin: 0 auto 19px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 767.98px) {
|
||||
.presentation__title {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
}
|
||||
|
||||
.presentation__subtitle {
|
||||
margin-bottom: 41px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.presentation__subtitle {
|
||||
max-width: 55%;
|
||||
margin: 0 auto 40px;
|
||||
font-size: 16px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 767.98px) {
|
||||
.presentation__subtitle {
|
||||
margin-bottom: 30px;
|
||||
max-width: 77%;
|
||||
}
|
||||
}
|
||||
|
||||
.presentation__btn {
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.presentation__btn {
|
||||
padding-left: 82px;
|
||||
padding-right: 82px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 767.98px) {
|
||||
.presentation__btn {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
}
|
||||
|
||||
.presentation__next {
|
||||
font-weight: 500;
|
||||
line-height: 22px;
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
.presentation__arrows {
|
||||
padding-top: 2px;
|
||||
animation: jump 2s ease-in-out infinite;
|
||||
}
|
||||
|
||||
.presentation__cards {
|
||||
max-width: 1300px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
@media (min-width: 1720px) {
|
||||
.presentation__cards {
|
||||
max-width: initial;
|
||||
margin-left: -10px;
|
||||
margin-right: -10px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1304.98px) {
|
||||
.presentation__cards {
|
||||
max-width: 1140px;
|
||||
}
|
||||
}
|
||||
|
||||
.presentation__bottom .presentation__title {
|
||||
margin-bottom: 13px;
|
||||
}
|
||||
|
||||
@keyframes jump {
|
||||
0% {
|
||||
transform: translateY(0px);
|
||||
}
|
||||
50% {
|
||||
transform: translateY(-5px);
|
||||
}
|
||||
60% {
|
||||
transform: translateY(20px);
|
||||
}
|
||||
70% {
|
||||
transform: translateY(0px);
|
||||
}
|
||||
80% {
|
||||
transform: translateY(20px);
|
||||
}
|
||||
100% {
|
||||
transform: translateY(0px);
|
||||
}
|
||||
}
|
||||
2
static/css/moover/root.css
Normal file
@@ -0,0 +1,2 @@
|
||||
.container{margin:0 auto;width:1280px;position:relative}@media (min-width: 1720px){.container{width:1720px}}@media (max-width: 1304.98px){.container{width:1120px;max-width:88vw}}@media (max-width: 991.98px){.container{width:640px;max-width:100vw}}@media (max-width: 767.98px){.container{margin:0 16px;width:auto}}:root{--color-primary: #FF613A;--color-white: #FFFFFF;--color-black: #000000;--color-black2: #272424;--color-grey: #F1F1F1;--color-grey2: #7A7979;--color-orange: #FF613A;--box-shadow-primary: -1px 4px 10px 0 rgba(198, 199, 203, 0.20),
|
||||
0 -1px 10px 0 rgba(198, 199, 203, 0.20);text-align:center;color:var(--color-black2)}html,body{max-width:100vw;max-height:initial}body{height:100%;position:relative}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-weight:700}h1,.h1{font-size:44px;line-height:52px}@media (min-width: 1720px){h1,.h1{font-size:48px;line-height:52px}}h2,.h2{font-size:24px;line-height:36px;margin-bottom:10px}@media (min-width: 1720px){h2,.h2{font-size:28px;margin-bottom:20px}}h3,.h3{font-size:20px;line-height:28px;margin-bottom:12px}@media (max-width: 1304.98px){h3,.h3{margin-bottom:13px}}h4,.h4{font-size:18px;line-height:26px;margin-bottom:20px}p{line-height:22px;margin-bottom:20px}@media (min-width: 1720px){p{font-size:20px;line-height:26px}}@media (max-width: 991.98px){p{margin-bottom:18px}}@media (max-width: 479.98px){p{margin-bottom:14px}}b{font-weight:500}@media (max-width: 991.98px){b{font-size:16px;line-height:22px}}.btn{display:inline-flex;text-decoration:none;color:black;line-height:22px;border-radius:10px;padding:20px 76px 18px;justify-content:center;align-items:center;margin:0 3px;letter-spacing:0.2px;font-size:18px}.btn--primary{background:var(--color-primary);color:var(--color-white)}.title{font-size:44px;font-weight:700;line-height:52px;margin-bottom:13px;margin-left:auto;margin-right:auto}@media (min-width: 1720px){.title{font-size:48px;margin-bottom:22px}}@media (max-width: 1304.98px){.title{margin-bottom:20px}}@media (max-width: 991.98px){.title{font-size:32px;line-height:38.73px}}@media (max-width: 767.98px){.title{margin-bottom:14px}}.subtitle{margin-bottom:81px;line-height:22px}@media (min-width: 1720px){.subtitle{font-size:20px;margin-bottom:105px}}@media (max-width: 1304.98px){.subtitle{margin-bottom:71px}}.hide{display:none}.hide__xxl{display:inline-flex}@media (min-width: 1720px){.hide__xxl{display:none}}@media (max-width: 991.98px){.hide__md{display:none}}@media (max-width: 479.98px){.hide__xs{display:none}}.show__xxl{display:none}@media (min-width: 1720px){.show__xxl{display:block}}.show__md{display:none}@media (max-width: 991.98px){.show__md{display:initial}}@media (min-width: 480px){.show__xs{display:none}}@media (min-width: 1440px){.br--xxl{display:none}}@media (max-width: 991.98px){.br--md{display:none}}@media (max-width: 767.98px){.br--sm{display:none}}.is-container.wrapper_main{overflow-x:hidden}.is-container.wrapper_main>.container{padding-top:129px}@media (max-width: 1304.98px){.is-container.wrapper_main>.container{padding-top:126px}}@media (max-width: 991.98px){.is-container.wrapper_main>.container{padding-top:85px}}@media (max-width: 767.98px){.is-container.wrapper_main>.container{padding-top:57px}}@media (min-width: 1440px){.is-container.wrapper_main{max-width:initial}}.is-container.wrapper_main>.container{position:relative;left:15px}@media (min-width: 1720px){.is-container.wrapper_main>.container{left:17px}}@media (max-width: 767.98px){.is-container.wrapper_main>.container{left:0}}
|
||||
1
static/css/moover/sore.css
Normal file
@@ -0,0 +1 @@
|
||||
.sore{margin-bottom:160px;margin-top:1px}@media (min-width: 1720px){.sore{margin-bottom:178px}}@media (max-width: 1304.98px){.sore{margin-bottom:140px}}@media (max-width: 991.98px){.sore{margin-bottom:60px}}@media (max-width: 479.98px){.sore{margin-bottom:40px}}.sore__img{margin:0 auto 13px;position:relative;left:-17px;top:-13px}@media (min-width: 1720px){.sore__img{margin-bottom:40px;top:-5px;left:-21px}}@media (max-width: 1304.98px){.sore__img{left:2px;top:-22px;margin-bottom:4px}}@media (max-width: 991.98px){.sore__img{top:-8px;left:-15px;margin-bottom:18px}}@media (max-width: 479.98px){.sore__img{max-width:108.5%;top:-26px;left:-18px;margin-bottom:-9px}}.sore .title{margin-bottom:40px}@media (min-width: 1720px){.sore .title{margin-bottom:61px}}@media (max-width: 991.98px){.sore .title{margin-bottom:20px}}@media (max-width: 479.98px){.sore .title{margin-bottom:29px}}.sore .subtitle{max-width:62%;margin:0 auto 10px}@media (min-width: 1720px){.sore .subtitle{line-height:26px;max-width:60%}}@media (max-width: 1304.98px){.sore .subtitle{max-width:65%}}@media (max-width: 991.98px){.sore .subtitle{max-width:85%}}@media (max-width: 479.98px){.sore .subtitle{max-width:99%}}.sore .h3{max-width:47%;margin:0 auto 19px}@media (min-width: 1720px){.sore .h3{max-width:38%}}@media (max-width: 1304.98px){.sore .h3{max-width:50%}}@media (max-width: 991.98px){.sore .h3{max-width:65%;margin-bottom:21px}}@media (max-width: 479.98px){.sore .h3{max-width:100%;margin-bottom:17px}}@media (max-width: 767.98px){.sore__btn{padding-left:50px;padding-right:50px}}@media (max-width: 479.98px){.sore__btn{box-sizing:border-box;padding:8px 15px;min-height:60px;display:flex}}
|
||||
1
static/css/moover/use.css
Normal file
@@ -0,0 +1 @@
|
||||
.use{margin-bottom:123px}@media (min-width: 1720px){.use{margin-bottom:184px}}@media (max-width: 1304.98px){.use{margin-bottom:142px}}@media (max-width: 991.98px){.use{margin-bottom:121px}}.use__img{width:67.5%;margin-left:16px;margin-bottom:31px}@media (min-width: 1720px){.use__img{width:50.2%;margin-left:15px;margin-bottom:46px}}@media (max-width: 1304.98px){.use__img{width:77%;margin-left:10px;margin-bottom:34px}}@media (max-width: 991.98px){.use__img{margin-left:0;width:100%;margin-bottom:40px}}@media (max-width: 767.98px){.use__img{margin-bottom:30px}}.use__btn{margin-bottom:11px;text-align:center}@media (max-width: 767.98px){.use__btn{max-width:100%;padding-left:50px;padding-right:50px}}.use__link{font-size:18px;font-weight:600;line-height:26px;color:var(--color-grey2)}.use .title{max-width:80%;margin-bottom:49px}@media (min-width: 1720px){.use .title{max-width:40%}}@media (max-width: 991.98px){.use .title{margin-bottom:40px}}@media (max-width: 767.98px){.use .title{max-width:100%;margin-bottom:29px}}.use--lett{margin-bottom:120px}@media (min-width: 1720px){.use--lett{margin-bottom:126px}}@media (max-width: 1304.98px){.use--lett{margin-bottom:106px}}@media (max-width: 991.98px){.use--lett{margin-bottom:79px}}@media (max-width: 767.98px){.use--lett{margin-bottom:81px}}.use--lett .title{margin-bottom:51px}@media (max-width: 1304.98px){.use--lett .title{margin-bottom:39px}}@media (max-width: 767.98px){.use--lett .title{margin-bottom:10px}}.use--lett .use__img{margin-left:-5px;margin-right:-5px;max-width:110%;width:1290px}@media (min-width: 1720px){.use--lett .use__img{width:initial}}@media (max-width: 1304.98px){.use--lett .use__img{margin-left:0;margin-right:0;max-width:100%;width:1120px}}@media (max-width: 767.98px){.use--lett .use__img{max-width:103%;margin-left:-5px;margin-top:-6px}}@media (max-width: 479.98px){.use--lett .use__img{margin-bottom:3px}}@media (max-width: 991.98px){.use .h3{max-width:75%;margin:0 auto 22px}}@media (max-width: 767.98px){.use .h3{max-width:100%;margin-bottom:16px}}
|
||||
189
static/css/moover/uses.css
Normal file
@@ -0,0 +1,189 @@
|
||||
.uses {
|
||||
margin-bottom: 120px;
|
||||
}
|
||||
|
||||
@media (min-width: 1720px) {
|
||||
.uses {
|
||||
margin-bottom: 136px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1304.98px) {
|
||||
.uses {
|
||||
margin-bottom: 125px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.uses {
|
||||
margin-bottom: 100px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 479.98px) {
|
||||
.uses {
|
||||
margin-bottom: 199px;
|
||||
}
|
||||
}
|
||||
|
||||
.uses__grid {
|
||||
text-align: left;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
/* max-width: 101.5%; */
|
||||
/* width: 101.5%; */
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.uses__grid {
|
||||
grid-template-columns: 1fr 1fr;
|
||||
column-gap: 15px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 479.98px) {
|
||||
.uses__grid {
|
||||
display: block;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
.uses__item {
|
||||
min-height: 50px;
|
||||
margin-bottom: 19px;
|
||||
padding: 0 50px 0 2px;
|
||||
}
|
||||
|
||||
@media (min-width: 1720px) {
|
||||
.uses__item {
|
||||
margin-bottom: 22px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.uses__item {
|
||||
padding-right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.uses__item p:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.uses__icon {
|
||||
margin-bottom: 11px;
|
||||
}
|
||||
|
||||
@media (min-width: 1720px) {
|
||||
.uses__icon {
|
||||
width: 147px;
|
||||
height: 147px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
.uses .title {
|
||||
max-width: 50%;
|
||||
margin: 0 auto 60px;
|
||||
}
|
||||
|
||||
@media (max-width: 1304.98px) {
|
||||
.uses .title {
|
||||
max-width: 70%;
|
||||
margin-bottom: 39px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 479.98px) {
|
||||
.uses .title {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
}
|
||||
|
||||
.uses__title {
|
||||
font-size: 24px;
|
||||
font-weight: 700;
|
||||
line-height: 36px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.uses--cstmr .uses__item {
|
||||
text-align: center;
|
||||
padding: 0 15px;
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.uses--cstmr .uses__item {
|
||||
margin-bottom: 42px;
|
||||
min-height: 255px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 479.98px) {
|
||||
.uses--cstmr .uses__item {
|
||||
margin-bottom: 25px;
|
||||
min-height: 194px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.uses--cstmr .uses__item p {
|
||||
max-width: 90%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 479.98px) {
|
||||
.uses--cstmr .uses__item p {
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.uses--cstmr .uses__icon {
|
||||
width: 118px;
|
||||
height: 118px;
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.uses--cstmr .uses__icon {
|
||||
width: 142px;
|
||||
height: 142px;
|
||||
margin-bottom: 23px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 479.98px) {
|
||||
.uses--cstmr .uses__icon {
|
||||
width: 117px;
|
||||
height: 117px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.uses--cstmr .uses__grid {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1304.98px) {
|
||||
.uses--cstmr .title {
|
||||
margin-bottom: 61px;
|
||||
max-width: 80%;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.uses--cstmr .title {
|
||||
margin-bottom: 44px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 479.98px) {
|
||||
.uses--cstmr .title {
|
||||
max-width: 90%;
|
||||
margin-bottom: 31px;
|
||||
}
|
||||
}
|
||||
204
static/css/slick-theme.css
Normal file
@@ -0,0 +1,204 @@
|
||||
@charset 'UTF-8';
|
||||
/* Slider */
|
||||
.slick-loading .slick-list
|
||||
{
|
||||
background: #fff url('./ajax-loader.gif') center center no-repeat;
|
||||
}
|
||||
|
||||
/* Icons */
|
||||
@font-face
|
||||
{
|
||||
font-family: 'slick';
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
|
||||
src: url('./fonts/slick.eot');
|
||||
src: url('./fonts/slick.eot?#iefix') format('embedded-opentype'), url('./fonts/slick.woff') format('woff'), url('./fonts/slick.ttf') format('truetype'), url('./fonts/slick.svg#slick') format('svg');
|
||||
}
|
||||
/* Arrows */
|
||||
.slick-prev,
|
||||
.slick-next
|
||||
{
|
||||
font-size: 0;
|
||||
line-height: 0;
|
||||
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
|
||||
display: block;
|
||||
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
padding: 0;
|
||||
-webkit-transform: translate(0, -50%);
|
||||
-ms-transform: translate(0, -50%);
|
||||
transform: translate(0, -50%);
|
||||
|
||||
cursor: pointer;
|
||||
|
||||
color: transparent;
|
||||
border: none;
|
||||
outline: none;
|
||||
background: transparent;
|
||||
}
|
||||
.slick-prev:hover,
|
||||
.slick-prev:focus,
|
||||
.slick-next:hover,
|
||||
.slick-next:focus
|
||||
{
|
||||
color: transparent;
|
||||
outline: none;
|
||||
background: transparent;
|
||||
}
|
||||
.slick-prev:hover:before,
|
||||
.slick-prev:focus:before,
|
||||
.slick-next:hover:before,
|
||||
.slick-next:focus:before
|
||||
{
|
||||
opacity: 1;
|
||||
}
|
||||
.slick-prev.slick-disabled:before,
|
||||
.slick-next.slick-disabled:before
|
||||
{
|
||||
opacity: .25;
|
||||
}
|
||||
|
||||
.slick-prev:before,
|
||||
.slick-next:before
|
||||
{
|
||||
font-family: 'slick';
|
||||
font-size: 20px;
|
||||
line-height: 1;
|
||||
|
||||
opacity: .75;
|
||||
color: white;
|
||||
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
.slick-prev
|
||||
{
|
||||
left: -25px;
|
||||
}
|
||||
[dir='rtl'] .slick-prev
|
||||
{
|
||||
right: -25px;
|
||||
left: auto;
|
||||
}
|
||||
.slick-prev:before
|
||||
{
|
||||
content: '←';
|
||||
}
|
||||
[dir='rtl'] .slick-prev:before
|
||||
{
|
||||
content: '→';
|
||||
}
|
||||
|
||||
.slick-next
|
||||
{
|
||||
right: -25px;
|
||||
}
|
||||
[dir='rtl'] .slick-next
|
||||
{
|
||||
right: auto;
|
||||
left: -25px;
|
||||
}
|
||||
.slick-next:before
|
||||
{
|
||||
content: '→';
|
||||
}
|
||||
[dir='rtl'] .slick-next:before
|
||||
{
|
||||
content: '←';
|
||||
}
|
||||
|
||||
/* Dots */
|
||||
.slick-dotted.slick-slider
|
||||
{
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.slick-dots
|
||||
{
|
||||
position: absolute;
|
||||
bottom: -25px;
|
||||
|
||||
display: block;
|
||||
|
||||
width: 100%;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
|
||||
list-style: none;
|
||||
|
||||
text-align: center;
|
||||
}
|
||||
.slick-dots li
|
||||
{
|
||||
position: relative;
|
||||
|
||||
display: inline-block;
|
||||
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
margin: 0 5px;
|
||||
padding: 0;
|
||||
|
||||
cursor: pointer;
|
||||
}
|
||||
.slick-dots li button
|
||||
{
|
||||
font-size: 0;
|
||||
line-height: 0;
|
||||
|
||||
display: block;
|
||||
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
padding: 5px;
|
||||
|
||||
cursor: pointer;
|
||||
|
||||
color: transparent;
|
||||
border: 0;
|
||||
outline: none;
|
||||
background: transparent;
|
||||
}
|
||||
.slick-dots li button:hover,
|
||||
.slick-dots li button:focus
|
||||
{
|
||||
outline: none;
|
||||
}
|
||||
.slick-dots li button:hover:before,
|
||||
.slick-dots li button:focus:before
|
||||
{
|
||||
opacity: 1;
|
||||
}
|
||||
.slick-dots li button:before
|
||||
{
|
||||
font-family: 'slick';
|
||||
font-size: 6px;
|
||||
line-height: 20px;
|
||||
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
|
||||
content: '•';
|
||||
text-align: center;
|
||||
|
||||
opacity: .25;
|
||||
color: black;
|
||||
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
.slick-dots li.slick-active button:before
|
||||
{
|
||||
opacity: .75;
|
||||
color: black;
|
||||
}
|
||||
146
static/css/slick.css
Normal file
@@ -0,0 +1,146 @@
|
||||
/* Slider */
|
||||
.slick-slider {
|
||||
position: relative;
|
||||
display: block;
|
||||
box-sizing: border-box;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
-webkit-touch-callout: none;
|
||||
-khtml-user-select: none;
|
||||
-ms-touch-action: pan-y;
|
||||
touch-action: pan-y;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
}
|
||||
|
||||
.slick-list {
|
||||
position: relative;
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.slick-list:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.slick-list.dragging {
|
||||
cursor: pointer;
|
||||
cursor: hand;
|
||||
}
|
||||
|
||||
.slick-slider .slick-track,
|
||||
.slick-slider .slick-list {
|
||||
-webkit-transform: translate3d(0, 0, 0);
|
||||
-moz-transform: translate3d(0, 0, 0);
|
||||
-ms-transform: translate3d(0, 0, 0);
|
||||
-o-transform: translate3d(0, 0, 0);
|
||||
transform: translate3d(0, 0, 0);
|
||||
}
|
||||
|
||||
.slick-track {
|
||||
position: relative;
|
||||
top: 0;
|
||||
left: 0;
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.slick-track:before,
|
||||
.slick-track:after {
|
||||
display: table;
|
||||
content: '';
|
||||
}
|
||||
|
||||
.slick-track:after {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.slick-loading .slick-track {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.slick-slide {
|
||||
display: none;
|
||||
float: left;
|
||||
height: 100%;
|
||||
min-height: 1px;
|
||||
}
|
||||
|
||||
[dir='rtl'] .slick-slide {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.slick-slide img {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.slick-slide.slick-loading img {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.slick-slide.dragging img {
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.slick-initialized .slick-slide {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.slick-loading .slick-slide {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.slick-vertical .slick-slide {
|
||||
display: block;
|
||||
|
||||
height: auto;
|
||||
|
||||
border: 1px solid transparent;
|
||||
}
|
||||
|
||||
.slick-arrow.slick-hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
.slick-prev, .slick-next {
|
||||
font-size: 0;
|
||||
line-height: 0;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
display: block;
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
padding: 0;
|
||||
-webkit-transform: translate(0, -50%);
|
||||
-ms-transform: translate(0, -50%);
|
||||
transform: translate(0, -50%);
|
||||
cursor: pointer;
|
||||
color: transparent;
|
||||
outline: none;
|
||||
background: transparent;
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
appearance: none;
|
||||
border: 1px solid var(--color-primary);
|
||||
outline: 0;
|
||||
border-radius: 50%;
|
||||
box-sizing: border-box;
|
||||
text-indent: -9999px;
|
||||
z-index: 1;
|
||||
background: var(--color-primary) url("/static/img/svg/slick-arrow.svg") no-repeat center;
|
||||
transition: background-color .2s ease-in-out;
|
||||
}
|
||||
|
||||
.slick-next {
|
||||
right: 0;
|
||||
transform: rotate(180deg) translate(0, 50%);
|
||||
}
|
||||
|
||||
.slick-disabled {
|
||||
display: none !important;
|
||||
}
|
||||
@@ -253,6 +253,7 @@ footer {
|
||||
height: 318px;
|
||||
background: #272424;
|
||||
margin-top: 50px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
section.register>h1 {
|
||||
@@ -419,6 +420,7 @@ footer>div {
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
line-height: 22px;
|
||||
|
||||
}
|
||||
|
||||
.footer_text_contact {
|
||||
@@ -3380,6 +3382,11 @@ details[open] summary ~ *{
|
||||
display: none;
|
||||
}
|
||||
|
||||
input.error::placeholder {
|
||||
color: red;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
BIN
static/img/png/Box10.png
Normal file
|
After Width: | Height: | Size: 80 KiB |
BIN
static/img/png/Box11.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
static/img/png/Box12.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
static/img/png/Box9.png
Normal file
|
After Width: | Height: | Size: 73 KiB |
BIN
static/img/png/customer/sender-card2.png
Normal file
|
After Width: | Height: | Size: 844 KiB |
BIN
static/img/png/customer/sender-card3-md.png
Normal file
|
After Width: | Height: | Size: 326 KiB |
BIN
static/img/png/customer/sender-card3.png
Normal file
|
After Width: | Height: | Size: 467 KiB |
BIN
static/img/png/customer/use-1120.png
Normal file
|
After Width: | Height: | Size: 3.0 MiB |
BIN
static/img/png/customer/use-1280.png
Normal file
|
After Width: | Height: | Size: 3.0 MiB |
BIN
static/img/png/customer/use-1720.png
Normal file
|
After Width: | Height: | Size: 3.0 MiB |
BIN
static/img/png/customer/use-328.png
Normal file
|
After Width: | Height: | Size: 777 KiB |
BIN
static/img/png/customer/use-640.png
Normal file
|
After Width: | Height: | Size: 2.3 MiB |
BIN
static/img/png/mover/about-1120.png
Normal file
|
After Width: | Height: | Size: 605 KiB |
BIN
static/img/png/mover/about-1280.png
Normal file
|
After Width: | Height: | Size: 706 KiB |
BIN
static/img/png/mover/about-1720.png
Normal file
|
After Width: | Height: | Size: 884 KiB |
BIN
static/img/png/mover/about-328.png
Normal file
|
After Width: | Height: | Size: 305 KiB |
BIN
static/img/png/mover/about-640.png
Normal file
|
After Width: | Height: | Size: 689 KiB |
BIN
static/img/png/mover/benefits-1120.png
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
BIN
static/img/png/mover/benefits-1280.png
Normal file
|
After Width: | Height: | Size: 1.7 MiB |
BIN
static/img/png/mover/benefits-1720.png
Normal file
|
After Width: | Height: | Size: 2.6 MiB |
BIN
static/img/png/mover/benefits-328.png
Normal file
|
After Width: | Height: | Size: 558 KiB |
BIN
static/img/png/mover/benefits-640.png
Normal file
|
After Width: | Height: | Size: 1.7 MiB |
BIN
static/img/png/mover/image1.png
Normal file
|
After Width: | Height: | Size: 78 KiB |
BIN
static/img/png/mover/image2.png
Normal file
|
After Width: | Height: | Size: 74 KiB |
BIN
static/img/png/mover/image3.png
Normal file
|
After Width: | Height: | Size: 60 KiB |
BIN
static/img/png/mover/image4.png
Normal file
|
After Width: | Height: | Size: 99 KiB |
BIN
static/img/png/mover/sender-card1.png
Normal file
|
After Width: | Height: | Size: 1.2 MiB |
BIN
static/img/png/mover/sender-card2.png
Normal file
|
After Width: | Height: | Size: 967 KiB |
BIN
static/img/png/mover/sender-card3-md.png
Normal file
|
After Width: | Height: | Size: 380 KiB |
BIN
static/img/png/mover/sender-card3.png
Normal file
|
After Width: | Height: | Size: 501 KiB |
BIN
static/img/png/mover/sore-1120.png
Normal file
|
After Width: | Height: | Size: 2.0 MiB |
BIN
static/img/png/mover/sore-1280.png
Normal file
|
After Width: | Height: | Size: 2.0 MiB |
BIN
static/img/png/mover/sore-1720.png
Normal file
|
After Width: | Height: | Size: 2.0 MiB |
BIN
static/img/png/mover/sore-328.png
Normal file
|
After Width: | Height: | Size: 2.1 MiB |
BIN
static/img/png/mover/sore-640.png
Normal file
|
After Width: | Height: | Size: 2.7 MiB |
BIN
static/img/png/mover/use-1120.png
Normal file
|
After Width: | Height: | Size: 2.9 MiB |
BIN
static/img/png/mover/use-1280.png
Normal file
|
After Width: | Height: | Size: 2.9 MiB |
BIN
static/img/png/mover/use-1720.png
Normal file
|
After Width: | Height: | Size: 2.9 MiB |
BIN
static/img/png/mover/use-328.png
Normal file
|
After Width: | Height: | Size: 767 KiB |
BIN
static/img/png/mover/use-640.png
Normal file
|
After Width: | Height: | Size: 1.8 MiB |
BIN
static/img/png/mover/use-letters-1120.png
Normal file
|
After Width: | Height: | Size: 2.6 MiB |
BIN
static/img/png/mover/use-letters-1280.png
Normal file
|
After Width: | Height: | Size: 2.3 MiB |
BIN
static/img/png/mover/use-letters-1739.png
Normal file
|
After Width: | Height: | Size: 2.6 MiB |
BIN
static/img/png/mover/use-letters-328.png
Normal file
|
After Width: | Height: | Size: 663 KiB |
BIN
static/img/png/mover/use-letters-640.png
Normal file
|
After Width: | Height: | Size: 1.2 MiB |
BIN
static/img/png/mover/use-letters-s1.png
Normal file
|
After Width: | Height: | Size: 190 KiB |
BIN
static/img/png/mover/use-letters-s2.png
Normal file
|
After Width: | Height: | Size: 231 KiB |
BIN
static/img/png/mover/use-letters-s3.png
Normal file
|
After Width: | Height: | Size: 245 KiB |
BIN
static/img/png/mover/use-letters-s4.png
Normal file
|
After Width: | Height: | Size: 426 KiB |
BIN
static/img/png/mover/use-letters-s5.png
Normal file
|
After Width: | Height: | Size: 321 KiB |
BIN
static/img/png/mover/use-letters-s6.png
Normal file
|
After Width: | Height: | Size: 307 KiB |
BIN
static/img/png/mover/use-letters-s7.png
Normal file
|
After Width: | Height: | Size: 695 KiB |
BIN
static/img/png/mover/use-letters-s8.png
Normal file
|
After Width: | Height: | Size: 127 KiB |
3
static/img/svg/Arrow08.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg width="68" height="18" viewBox="0 0 68 18" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M54.5455 2.94981C52.766 1.91497 50.7812 0.832029 50.1346 0.543456C48.2971 -0.276928 46.5619 -0.157082 46.0488 0.825723C45.351 2.16215 46.6527 3.4895 50.8124 5.68494C52.8468 6.75803 54.4597 7.6888 54.3974 7.75267C54.2493 7.90445 35.6219 5.73738 28.188 4.70333C25.0146 4.26219 18.1492 3.28688 12.9317 2.53588C7.71422 1.78488 2.84561 1.17067 2.11246 1.17067C0.627678 1.17067 -0.472054 2.11365 0.203789 2.80631C1.35891 3.99017 43.0138 10.8158 56.6476 12.0552L59.7199 12.3347L58.0351 13.068C55.8895 14.0019 52.6137 16.4548 52.6137 17.1277C52.6137 18.5099 56.4795 18.2249 61.8455 16.4473C66.0379 15.0585 68 13.4902 68 11.5286C68 9.87083 66.8087 8.92115 61.9936 6.7399C59.6768 5.69008 56.3249 3.98465 54.5455 2.94981Z" fill="#FF613A" fill-opacity="0.8"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 860 B |
3
static/img/svg/Arrow23.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg width="62" height="20" viewBox="0 0 62 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M31.2431 4.90696C27.074 4.72772 20.6916 5.46692 17.9124 6.45061C16.4661 6.96259 2.08303 11.0406 1.39753 11.9377C-0.140762 13.9508 1.29118 14.408 3.1617 13.1727C5.89172 11.37 27.1619 8.69633 35.062 10.0591C39.9082 10.8948 47.4586 13.1603 47.564 13.8104C47.5892 13.9643 46.8851 14.2956 46.0002 14.5464C43.7152 15.1933 40.1182 17.1925 39.6148 18.0955C39.308 18.6451 39.3898 18.9582 39.9052 19.2102C41.3022 19.8922 46.7352 20.1339 50.668 19.6888C52.8608 19.4402 55.7454 19.2598 57.0782 19.2876C60.8168 19.3653 62.6554 17.5634 61.518 14.9368C60.4219 12.4061 53.0751 3.8059 50.2101 1.69982C48.7444 0.62243 48.2982 0.471218 47.3165 0.719869C46.1556 1.01364 45.5481 1.89888 45.6075 3.20956C45.6224 3.54513 46.1962 4.82242 46.8823 6.04822L48.1296 8.27667L45.3967 7.42798C41.3929 6.18448 35.1664 5.07533 31.2431 4.90696Z" fill="#FF613A" fill-opacity="0.8"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 960 B |
4
static/img/svg/airplane_takeoff.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<svg width="147" height="147" viewBox="0 0 147 147" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M13.7812 124.031H96.4688" stroke="#FF613A" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M9.7043 80.6205L31.3523 100.89C34.2389 103.596 37.9217 105.298 41.8531 105.743C45.7845 106.188 49.7545 105.352 53.1727 103.36L140.109 52.8283L129.429 39.7362C126.651 36.3429 122.75 34.0553 118.433 33.2865C114.115 32.5177 109.665 33.3186 105.886 35.5444L80.3906 50.5315L45.9375 39.0471L36.4629 43.124C35.7541 43.4278 35.1331 43.9052 34.6573 44.5121C34.1815 45.1189 33.8661 45.8359 33.7402 46.5967C33.6144 47.3576 33.6821 48.1379 33.9371 48.8656C34.1922 49.5934 34.6264 50.2453 35.1996 50.7612L52.8281 66.6096L36.75 75.7971L20.6719 68.9065L11.025 73.0408C10.3232 73.3423 9.70757 73.8141 9.23395 74.4134C8.76033 75.0127 8.44363 75.7206 8.31251 76.4731C8.18139 77.2256 8.23999 77.999 8.48301 78.7231C8.72602 79.4473 9.14578 80.0994 9.7043 80.6205V80.6205Z" stroke="#FF613A" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.0 KiB |
8
static/img/svg/bax.svg
Normal file
@@ -0,0 +1,8 @@
|
||||
<svg width="64" height="64" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M58 16H6C4.89543 16 4 16.8954 4 18V46C4 47.1046 4.89543 48 6 48H58C59.1046 48 60 47.1046 60 46V18C60 16.8954 59.1046 16 58 16Z" stroke="#FF613A" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M32 40C36.4183 40 40 36.4183 40 32C40 27.5817 36.4183 24 32 24C27.5817 24 24 27.5817 24 32C24 36.4183 27.5817 40 32 40Z" stroke="#FF613A" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M44 16L60 30" stroke="#FF613A" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M44 48L60 34" stroke="#FF613A" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M20 16L4 30" stroke="#FF613A" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M20 48L4 34" stroke="#FF613A" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 958 B |
6
static/img/svg/books.svg
Normal file
@@ -0,0 +1,6 @@
|
||||
<svg width="64" height="64" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M56 44.3253V19.6753C55.9981 19.3193 55.9023 18.97 55.7224 18.6627C55.5424 18.3555 55.2846 18.1011 54.975 17.9253L32.975 5.55031C32.6786 5.37916 32.3423 5.28906 32 5.28906C31.6577 5.28906 31.3214 5.37916 31.025 5.55031L9.025 17.9253C8.71538 18.1011 8.45759 18.3555 8.27763 18.6627C8.09768 18.97 8.00191 19.3193 8 19.6753V44.3253C8.00191 44.6814 8.09768 45.0306 8.27763 45.3379C8.45759 45.6451 8.71538 45.8995 9.025 46.0753L31.025 58.4503C31.3214 58.6215 31.6577 58.7116 32 58.7116C32.3423 58.7116 32.6786 58.6215 32.975 58.4503L54.975 46.0753C55.2846 45.8995 55.5424 45.6451 55.7224 45.3379C55.9023 45.0306 55.9981 44.6814 56 44.3253V44.3253Z" stroke="#FF613A" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M44.25 38.125V25.125L20 11.75" stroke="#FF613A" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M55.7249 18.6504L32.2249 32.0004L8.2749 18.6504" stroke="#FF613A" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M32.225 32L32 58.7" stroke="#FF613A" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
5
static/img/svg/box.svg
Normal file
@@ -0,0 +1,5 @@
|
||||
<svg width="64" height="64" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M56 14H8C6.89543 14 6 14.8954 6 16V22C6 23.1046 6.89543 24 8 24H56C57.1046 24 58 23.1046 58 22V16C58 14.8954 57.1046 14 56 14Z" stroke="#FF613A" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M54 24V48C54 48.5304 53.7893 49.0391 53.4142 49.4142C53.0391 49.7893 52.5304 50 52 50H12C11.4696 50 10.9609 49.7893 10.5858 49.4142C10.2107 49.0391 10 48.5304 10 48V24" stroke="#FF613A" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M26 34H38" stroke="#FF613A" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 687 B |