itramb commited on
Commit
50e8e86
·
verified ·
1 Parent(s): 12f57a8

Upload 57 files

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
.gitattributes CHANGED
@@ -39,3 +39,9 @@ docs/public/flower3.jpg filter=lfs diff=lfs merge=lfs -text
39
  docs/public/flower4.jpg filter=lfs diff=lfs merge=lfs -text
40
  docs/public/flower5.jpg filter=lfs diff=lfs merge=lfs -text
41
  docs/public/x5.png filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
39
  docs/public/flower4.jpg filter=lfs diff=lfs merge=lfs -text
40
  docs/public/flower5.jpg filter=lfs diff=lfs merge=lfs -text
41
  docs/public/x5.png filter=lfs diff=lfs merge=lfs -text
42
+ public/flower1.jpg filter=lfs diff=lfs merge=lfs -text
43
+ public/flower2.jpg filter=lfs diff=lfs merge=lfs -text
44
+ public/flower3.jpg filter=lfs diff=lfs merge=lfs -text
45
+ public/flower4.jpg filter=lfs diff=lfs merge=lfs -text
46
+ public/flower5.jpg filter=lfs diff=lfs merge=lfs -text
47
+ public/x5.png filter=lfs diff=lfs merge=lfs -text
public/FileOutlined.svg ADDED
public/GithubOutlined.svg ADDED
public/LaptopOutlined.svg ADDED
public/MISIS-logo.svg ADDED
public/SearchOutlined.svg ADDED
public/airi_logo_black.svg ADDED
public/airi_logo_white.svg ADDED
public/copy.svg ADDED
public/flower1.jpg ADDED

Git LFS Details

  • SHA256: 1a4a9761b4e2941755ba98c0e3d295e43919340cc5316c2816855f10a3d196c9
  • Pointer size: 131 Bytes
  • Size of remote file: 995 kB
public/flower2.jpg ADDED

Git LFS Details

  • SHA256: a45a0b4936267c03aa804c3a3f4bf7800d545cf49b38193bebcdd07d58e30235
  • Pointer size: 132 Bytes
  • Size of remote file: 6.95 MB
public/flower3.jpg ADDED

Git LFS Details

  • SHA256: 37b904aad22531a25c042484449ccf7bf1b11aa4249e88ef3e010ceba553ddb8
  • Pointer size: 132 Bytes
  • Size of remote file: 1.59 MB
public/flower4.jpg ADDED

Git LFS Details

  • SHA256: c8447ff4b199298bc8e00f703db5661db9df1e02623722fc42bf010e5d5109d7
  • Pointer size: 132 Bytes
  • Size of remote file: 1.4 MB
public/flower5.jpg ADDED

Git LFS Details

  • SHA256: 4f83da281bd3642d52400d50dcd61a3ea138a865b6b760fe2fa3929858a1fb43
  • Pointer size: 133 Bytes
  • Size of remote file: 26 MB
public/hse-logo.svg ADDED
public/huggingFace.svg ADDED
public/link.svg ADDED
public/linkedIn_logo.svg ADDED
public/mei-logo.svg ADDED
public/mirea-logo.svg ADDED
public/mtuci-logo.svg ADDED
public/ok.svg ADDED
public/paper-svgrepo-com.svg ADDED
public/telegram.svg ADDED
public/vk.svg ADDED
public/x4.jpg ADDED
public/x5.png ADDED

Git LFS Details

  • SHA256: 5e06859afd7a1ffcc9fccca46545754d16080ffbdd3e2a1fbadb4ee2ad777de2
  • Pointer size: 131 Bytes
  • Size of remote file: 319 kB
public/x6.png ADDED
public/x_logo.svg ADDED
scripts/barChart.js ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ new Chart(document.getElementById('BarChart'), {
2
+ type: 'bar',
3
+ data: {
4
+ labels: ['q', 'w', 'e', 'r', 't', 'y'],
5
+ datasets: [
6
+ {
7
+ label: 'Dataset 1',
8
+ data: [520, 760, 240, 433, 156, 380],
9
+ backgroundColor: '#64bbf3',
10
+ },
11
+ {
12
+ label: 'Dataset 2',
13
+ data: [450, 810, 370, 400, 215, 300],
14
+ backgroundColor: '#ee6c71',
15
+ },
16
+ ],
17
+ },
18
+ options: {
19
+ responsive: true,
20
+ plugins: {
21
+ legend: {
22
+ position: 'top',
23
+ },
24
+ title: {
25
+ display: true,
26
+ text: 'Chart.js Bar Chart',
27
+ },
28
+ },
29
+ },
30
+ })
scripts/beforeAfter.js ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ const container = document.querySelector('.compare-images')
2
+ const handle = document.querySelector('.slider-handle')
3
+ const beforeImg = document.querySelector('.before-img')
4
+
5
+ container.addEventListener('mousemove', (e) => {
6
+ const rect = container.getBoundingClientRect()
7
+ const offsetX = e.clientX - rect.left
8
+
9
+ const clampedX = Math.max(0, Math.min(offsetX, rect.width))
10
+
11
+ handle.style.left = `${clampedX}px`
12
+
13
+ beforeImg.style.clipPath = `inset(0 0 0 ${clampedX}px)`
14
+ })
scripts/codeCopy.js ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ document.querySelectorAll('.bibTeX-section').forEach((section) => {
2
+ const button = section.querySelector('.copy-button')
3
+ if (!button) return
4
+
5
+ const codeElement = section.querySelector('.bibTeX')
6
+ const activeСontent = button.querySelector('.active-content')
7
+ const inactiveСontent = button.querySelector('.inactive-content')
8
+
9
+ const code = codeElement ? codeElement.innerText : ''
10
+
11
+ button.addEventListener('click', () => {
12
+ navigator.clipboard.writeText(code).catch((err) => {
13
+ console.error('Ошибка копирования:', err)
14
+ })
15
+
16
+ button.classList.add('copy-button--inactive')
17
+ button.classList.remove('copy-button--active')
18
+
19
+ if (activeСontent) activeСontent.style.display = 'none'
20
+ if (inactiveСontent) inactiveСontent.style.display = 'block'
21
+
22
+ setTimeout(() => {
23
+ button.classList.remove('copy-button--inactive')
24
+ button.classList.add('copy-button--active')
25
+
26
+ if (activeСontent) activeСontent.style.display = 'block'
27
+ if (inactiveСontent) inactiveСontent.style.display = 'none'
28
+ }, 3000)
29
+ })
30
+ })
scripts/dropdown.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ document.addEventListener('DOMContentLoaded', function () {
2
+ const dropdowns = document.querySelectorAll('[data-dropdown]')
3
+ const selectedValue = document.getElementById('selectedValue')
4
+
5
+ dropdowns.forEach((dropdown) => {
6
+ const button = dropdown.querySelector('.dropdown__button')
7
+
8
+ const items = dropdown.querySelectorAll('.dropdown__item')
9
+
10
+ button.addEventListener('click', function (e) {
11
+ dropdown.classList.toggle('open')
12
+ })
13
+
14
+ items.forEach((item) => {
15
+ item.addEventListener('click', function () {
16
+ const value = this.textContent
17
+ selectedValue.textContent = value
18
+ dropdown.classList.remove('open')
19
+ })
20
+ })
21
+ })
22
+ })
scripts/lightbox.js ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ function setupLightbox(thumbnailId, lightboxId, lightboxImgId, closeBtnId) {
2
+ const thumbnail = document.getElementById(thumbnailId)
3
+ const lightbox = document.getElementById(lightboxId)
4
+ const lightboxImg = document.getElementById(lightboxImgId)
5
+ const closeBtn = document.getElementById(closeBtnId)
6
+
7
+ if (thumbnail && lightbox && lightboxImg && closeBtn) {
8
+ thumbnail.addEventListener('click', () => {
9
+ lightbox.style.display = 'block'
10
+ lightboxImg.src = thumbnail.src
11
+ })
12
+
13
+ closeBtn.addEventListener('click', () => {
14
+ lightbox.style.display = 'none'
15
+ })
16
+
17
+ lightbox.addEventListener('click', (e) => {
18
+ if (e.target === lightbox) {
19
+ lightbox.style.display = 'none'
20
+ }
21
+ })
22
+ } else {
23
+ console.warn(`Элементы лайтбокса "${lightboxId}" не найдены.`)
24
+ }
25
+ }
26
+
27
+ setupLightbox('openLightbox1', 'lightbox1', 'lightbox-img1', 'closeLightbox1')
28
+ setupLightbox('openLightbox2', 'lightbox2', 'lightbox-img2', 'closeLightbox2')
29
+ setupLightbox('openLightbox3', 'lightbox3', 'lightbox-img3', 'closeLightbox3')
30
+ setupLightbox('openLightbox4', 'lightbox4', 'lightbox-img4', 'closeLightbox4')
scripts/lineChart.js ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ new Chart(document.getElementById('LineChart'), {
2
+ type: 'line',
3
+ data: {
4
+ labels: ['qq', 'w', 'e', 'r', 't', 'y'],
5
+ datasets: [
6
+ {
7
+ label: 'Dataset 1',
8
+ data: [520, 760, 240, 433, 156, 380],
9
+ backgroundColor: '#64bbf3',
10
+ },
11
+ {
12
+ label: 'Dataset 2',
13
+ data: [450, 810, 370, 400, 215, 300],
14
+ backgroundColor: '#ee6c71',
15
+ },
16
+ ],
17
+ },
18
+ options: {
19
+ responsive: true,
20
+ plugins: {
21
+ legend: {
22
+ position: 'top',
23
+ },
24
+ title: {
25
+ display: true,
26
+ text: 'Chart.js Line Chart',
27
+ },
28
+ },
29
+ },
30
+ })
scripts/pieChart.js ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ new Chart(document.getElementById('PieChart'), {
2
+ type: 'pie',
3
+ data: {
4
+ labels: ['1', '2', '3'],
5
+ datasets: [
6
+ {
7
+ label: 'Dataset 1',
8
+ data: [50, 15, 35],
9
+ backgroundColor: ['#64bbf3', '#ee6c71', '#fecc4e'],
10
+ },
11
+ ],
12
+ },
13
+ options: {
14
+ responsive: true,
15
+ plugins: {
16
+ legend: {
17
+ position: 'top',
18
+ labels: {
19
+ boxWidth: 15,
20
+ padding: 15,
21
+ },
22
+ },
23
+ title: {
24
+ display: true,
25
+ text: 'Chart.js Pie Chart',
26
+ },
27
+ },
28
+ },
29
+ })
scripts/sidebar.js ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ document.addEventListener('DOMContentLoaded', function () {
2
+ const sections = document.querySelectorAll('section[id]')
3
+ const navItems = document.querySelectorAll('.sidebar .nav-item')
4
+ const sidebar = document.querySelector('.sidebar')
5
+ const footer = document.getElementById('footer')
6
+
7
+ document.querySelectorAll('.sidebar a[href^="#"]').forEach((link) => {
8
+ const target = link.getAttribute('href')
9
+ const parentItem = link.closest('.nav-item')
10
+ if (parentItem && target) {
11
+ parentItem.setAttribute('data-target', target)
12
+ }
13
+ })
14
+
15
+ function updateActiveLink() {
16
+ let currentSectionId = null
17
+
18
+ sections.forEach((section) => {
19
+ const rect = section.getBoundingClientRect()
20
+ if (rect.top <= 100 && rect.bottom >= 50) {
21
+ currentSectionId = section.id
22
+ }
23
+ })
24
+
25
+ navItems.forEach((item) => item.classList.remove('active'))
26
+
27
+ if (!currentSectionId) return
28
+
29
+ const activeItem = document.querySelector(
30
+ `.sidebar .nav-item[data-target="#${currentSectionId}"]`
31
+ )
32
+ if (activeItem) {
33
+ activeItem.classList.add('active')
34
+ }
35
+ }
36
+
37
+ function adjustSidebarPosition() {
38
+ if (!sidebar || !footer) return
39
+
40
+ const footerRect = footer.getBoundingClientRect()
41
+ const sidebarHeight = sidebar.offsetHeight
42
+ const scrollTop = window.scrollY || document.documentElement.scrollTop
43
+
44
+ const footerTop = scrollTop + footerRect.top
45
+
46
+ const bodyContainer = document.querySelector('.body-container')
47
+ const bodyBottom = bodyContainer
48
+ ? bodyContainer.offsetTop + bodyContainer.offsetHeight
49
+ : footerTop
50
+
51
+ const initialSidebarTop = window.innerHeight * 0.2
52
+ const sidebarBottomOnPage = scrollTop + initialSidebarTop + sidebarHeight
53
+
54
+ if (sidebarBottomOnPage >= footerTop - 20) {
55
+ sidebar.style.position = 'absolute'
56
+ sidebar.style.top = `${bodyBottom - sidebarHeight - 20}px`
57
+ } else {
58
+ sidebar.style.position = 'fixed'
59
+ sidebar.style.top = `${20}%`
60
+ }
61
+ }
62
+
63
+ window.addEventListener('scroll', () => {
64
+ updateActiveLink()
65
+ adjustSidebarPosition()
66
+ })
67
+
68
+ window.addEventListener('resize', adjustSidebarPosition)
69
+
70
+ updateActiveLink()
71
+ adjustSidebarPosition()
72
+ })
scripts/swiper.js ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var swiper = new Swiper('.mySwiper', {
2
+ loop: true,
3
+ navigation: {
4
+ nextEl: '.swiper-button-next',
5
+ prevEl: '.swiper-button-prev',
6
+ },
7
+ })
8
+
9
+ const swiperLightbox = document.getElementById('swiper-lightbox')
10
+ const swiperLightboxImg = document.getElementById('swiper-lightbox-img')
11
+ const swiperCloseBtn = document.getElementById('swiper-lightbox__close')
12
+
13
+ if (swiperLightbox && swiperLightboxImg && swiperCloseBtn) {
14
+ document.querySelectorAll('.swiper-slide img').forEach((slideImage) => {
15
+ slideImage.addEventListener('click', () => {
16
+ const imgSrc = slideImage.src
17
+ if (imgSrc) {
18
+ swiperLightbox.style.display = 'flex'
19
+ swiperLightboxImg.src = imgSrc
20
+ }
21
+ })
22
+ })
23
+
24
+ swiperCloseBtn.addEventListener('click', () => {
25
+ swiperLightbox.style.display = 'none'
26
+ })
27
+
28
+ swiperLightbox.addEventListener('click', (e) => {
29
+ if (swiperLightbox.style.display === 'flex') {
30
+ swiperLightbox.style.display = 'none'
31
+ }
32
+ })
33
+ } else {
34
+ console.warn('Элементы лайтбокса в слайдере не найдены.')
35
+ }
scripts/swiperCharts.js ADDED
@@ -0,0 +1,142 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ const charts = {}
2
+
3
+ function initBarChart() {
4
+ if (charts.barChart) return
5
+ charts.barChart = new Chart(document.getElementById('BarChart-slider'), {
6
+ type: 'bar',
7
+ data: {
8
+ labels: ['q', 'w', 'e', 'r', 't', 'y'],
9
+ datasets: [
10
+ {
11
+ label: 'Dataset 1',
12
+ data: [520, 760, 240, 433, 156, 380],
13
+ backgroundColor: '#64bbf3',
14
+ },
15
+ {
16
+ label: 'Dataset 2',
17
+ data: [450, 810, 370, 400, 215, 300],
18
+ backgroundColor: '#ee6c71',
19
+ },
20
+ ],
21
+ },
22
+ options: {
23
+ responsive: true,
24
+ plugins: {
25
+ legend: {
26
+ position: 'top',
27
+ },
28
+ title: {
29
+ display: true,
30
+ text: 'Chart.js Bar Chart',
31
+ },
32
+ },
33
+ },
34
+ })
35
+ }
36
+
37
+ function initLineChart() {
38
+ if (charts.lineChart) return
39
+ charts.lineChart = new Chart(document.getElementById('LineChart-slider'), {
40
+ type: 'line',
41
+ data: {
42
+ labels: ['qq', 'w', 'e', 'r', 't', 'y'],
43
+ datasets: [
44
+ {
45
+ label: 'Dataset 1',
46
+ data: [520, 760, 240, 433, 156, 380],
47
+ backgroundColor: '#64bbf3',
48
+ },
49
+ {
50
+ label: 'Dataset 2',
51
+ data: [450, 810, 370, 400, 215, 300],
52
+ backgroundColor: '#ee6c71',
53
+ },
54
+ ],
55
+ },
56
+ options: {
57
+ responsive: true,
58
+ plugins: {
59
+ title: {
60
+ display: true,
61
+ text: 'Chart.js Line Chart',
62
+ },
63
+ },
64
+ },
65
+ })
66
+ }
67
+
68
+ function initPieChart() {
69
+ if (charts.pieChart) return
70
+ charts.pieChart = new Chart(document.getElementById('PieChart-slider'), {
71
+ type: 'pie',
72
+ data: {
73
+ labels: ['1', '2', '3'],
74
+ datasets: [
75
+ {
76
+ label: 'Dataset 1',
77
+ data: [50, 15, 35],
78
+ backgroundColor: ['#64bbf3', '#ee6c71', '#fecc4e'],
79
+ },
80
+ ],
81
+ },
82
+ options: {
83
+ responsive: true,
84
+ plugins: {
85
+ legend: {
86
+ labels: {
87
+ boxWidth: 15,
88
+ padding: 15,
89
+ },
90
+ },
91
+ title: {
92
+ display: true,
93
+ text: 'Chart.js Pie Chart',
94
+ },
95
+ },
96
+ },
97
+ })
98
+ }
99
+
100
+ initBarChart()
101
+
102
+ var swiperOnButton = new Swiper('.my-swiper-on-button', {
103
+ loop: false,
104
+ })
105
+
106
+ function onSlideChange() {
107
+ const activeIndex = swiperOnButton.realIndex
108
+
109
+ ;['barChart', 'lineChart', 'pieChart'].forEach((key) => {
110
+ if (charts[key]) {
111
+ charts[key].destroy()
112
+ charts[key] = null
113
+ }
114
+ })
115
+
116
+ if (activeIndex === 0) initBarChart()
117
+ if (activeIndex === 1) initLineChart()
118
+ if (activeIndex === 2) initPieChart()
119
+ }
120
+
121
+ swiperOnButton.on('slideChange', onSlideChange)
122
+
123
+ document.querySelectorAll('[data-slide-to]').forEach((button) => {
124
+ button.addEventListener('click', () => {
125
+ console.log(
126
+ 'click',
127
+ charts,
128
+ button.getAttribute('data-slide-to'),
129
+ parseInt(button.getAttribute('data-slide-to'))
130
+ )
131
+ document.querySelectorAll('.swiper-button').forEach((btn) => {
132
+ btn.classList.remove('active')
133
+ })
134
+ button.classList.add('active')
135
+ const index = parseInt(button.getAttribute('data-slide-to'))
136
+ swiperOnButton.slideTo(index)
137
+
138
+ setTimeout(() => {
139
+ onSlideChange()
140
+ }, 10)
141
+ })
142
+ })
styles/beforeAfter.css ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .compare-container {
2
+ max-width: 800px;
3
+ margin: 40px auto;
4
+ position: relative;
5
+ cursor: crosshair;
6
+ }
7
+
8
+ .compare-images {
9
+ position: relative;
10
+ width: 100%;
11
+ height: auto;
12
+ overflow: hidden;
13
+
14
+ border-radius: 10px;
15
+ aspect-ratio: 16 / 9;
16
+ }
17
+
18
+ .compare-img {
19
+ position: absolute;
20
+ top: 0;
21
+ left: 0;
22
+ width: 100%;
23
+ height: 100%;
24
+ object-fit: cover;
25
+ transition: clip-path 0.1s ease-out;
26
+ }
27
+
28
+ .before-img {
29
+ clip-path: inset(0 0 0 50%);
30
+ z-index: 1;
31
+ }
32
+
33
+ .after-img {
34
+ z-index: 0;
35
+ }
36
+
37
+ .slider-handle {
38
+ position: absolute;
39
+ top: 0;
40
+ left: 50%;
41
+ width: 2px;
42
+ height: 100%;
43
+ background-color: #2ebead;
44
+ pointer-events: none;
45
+ z-index: 2;
46
+ opacity: 0.7;
47
+ transition: left 0.1s ease-out;
48
+ }
49
+
50
+ .slider-handle::after {
51
+ content: '';
52
+ position: absolute;
53
+ top: 50%;
54
+ left: -11px;
55
+ transform: translateY(-50%);
56
+ width: 25px;
57
+ height: 25px;
58
+ background-color: #2ebead;
59
+ border-radius: 50%;
60
+ }
styles/bibTex.css ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .bibTeX-section__container {
2
+ display: flex;
3
+ flex-direction: column;
4
+ justify-content: center;
5
+ text-align: center;
6
+ justify-items: center;
7
+ overflow: hidden;
8
+ transition: all 0.3s ease;
9
+ }
10
+
11
+ .bibTeX__container {
12
+ border-radius: 15px;
13
+ padding: 20px;
14
+ background-color: #f4f4f4;
15
+ }
16
+
17
+ .bibTeX {
18
+ margin: 0;
19
+ padding: 0;
20
+ white-space: pre-wrap;
21
+ word-break: break-word;
22
+ background: transparent;
23
+ border: none;
24
+ font-size: 16px;
25
+ color: #333;
26
+ }
27
+
28
+ .copy-button {
29
+ padding: 10px;
30
+ text-align: center;
31
+ width: 180px;
32
+ margin-left: auto;
33
+ margin-right: auto;
34
+ color: white;
35
+ font-size: 18px;
36
+
37
+ border: none;
38
+ border-radius: 5px;
39
+ cursor: pointer;
40
+ transition: background-color 0.2s ease;
41
+ }
42
+ .copy-button > p,
43
+ .copy-button > img {
44
+ text-align: center;
45
+ margin-top: auto;
46
+ margin-bottom: auto;
47
+ margin-left: auto;
48
+ margin-right: auto;
49
+ }
50
+
51
+ .copy-button--active {
52
+ background-color: #64bbf3;
53
+ }
54
+ .copy-button--inactive {
55
+ background-color: #53d98a;
56
+ }
57
+
58
+ .copy-button--active:hover {
59
+ background-color: #56a1d3;
60
+ }
61
+
62
+ .copy-button .inactive-content {
63
+ display: none;
64
+ pointer-events: none;
65
+ }
styles/charts.css ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .diagrams-section__container {
2
+ display: flex;
3
+ justify-content: center;
4
+ flex-direction: column;
5
+ text-align: center;
6
+ }
7
+
8
+ .myChart {
9
+ margin-bottom: 20px;
10
+ padding: 10px;
11
+ border-radius: 15px;
12
+ border: 1px solid rgb(245, 245, 245);
13
+ transition: all 0.3s ease;
14
+ box-shadow: 0 4px 10px rgba(0, 0, 0, 0.06);
15
+ }
16
+
17
+ .myChart:hover {
18
+ box-shadow: 0 8px 15px rgba(0, 0, 0, 0.1);
19
+ }
20
+
21
+ .caption {
22
+ margin: 0 auto 40px auto;
23
+ font-size: 12px;
24
+ }
25
+
26
+ @media (max-width: 670px) {
27
+ .diagrams-section__container {
28
+ width: 90vw;
29
+ }
30
+ }
styles/codeSection.css ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .code-section__container {
2
+ position: relative;
3
+
4
+ border-radius: 5px;
5
+ padding: 50px;
6
+ overflow: hidden;
7
+ transition: all 0.3s ease;
8
+ box-shadow: 0 8px 15px rgba(0, 0, 0, 0.06);
9
+ }
10
+
11
+ .code__container {
12
+ padding: 20px;
13
+ background-color: #f4f4f4;
14
+ }
15
+
16
+ .code {
17
+ margin: 0;
18
+ padding: 0;
19
+ white-space: pre-wrap;
20
+ word-break: break-word;
21
+ background: transparent;
22
+ border: none;
23
+ font-size: 16px;
24
+ color: #333;
25
+ }
26
+
27
+ @media (max-width: 600px) {
28
+ .code-section__container {
29
+ padding: 20px;
30
+ }
31
+ }
styles/columnsSection.css ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .columns-section__container {
2
+ border: 1px solid rgb(245, 245, 245);
3
+ border-radius: 15px;
4
+ padding: 50px;
5
+ display: flex;
6
+ justify-content: center;
7
+ flex-direction: column;
8
+ text-align: center;
9
+ box-shadow: 0 4px 10px rgba(0, 0, 0, 0.06);
10
+ }
11
+
12
+ .column {
13
+ padding: 0 10px;
14
+ height: 100%;
15
+ border: none;
16
+ }
17
+
18
+ .row {
19
+ margin-bottom: 30px;
20
+ display: flex;
21
+ justify-content: center;
22
+ }
23
+
24
+ @media (max-width: 600px) {
25
+ .columns-section__container {
26
+ padding: 20px;
27
+ }
28
+ }
styles/dropdown.css ADDED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .dropdown-section__container {
2
+ border: 1px solid rgb(245, 245, 245);
3
+ border-radius: 15px;
4
+ padding: 50px;
5
+ display: flex;
6
+ justify-content: center;
7
+ flex-direction: column;
8
+ text-align: center;
9
+ box-shadow: 0 4px 10px rgba(0, 0, 0, 0.06);
10
+ }
11
+ .dropdown__row {
12
+ display: flex;
13
+ flex-direction: column;
14
+ flex-wrap: wrap;
15
+ gap: 10px;
16
+ }
17
+
18
+ .dropdown {
19
+ width: 100%;
20
+ position: relative;
21
+ flex: 1 1 30%;
22
+ min-width: 200px;
23
+ transition: flex 5.3s ease;
24
+ }
25
+
26
+ .dropdown__button {
27
+ width: 100%;
28
+ padding: 10px 15px;
29
+ background-color: #0b6efd;
30
+ color: white;
31
+ border: none;
32
+ border-radius: 5px;
33
+ cursor: pointer;
34
+ font-size: 16px;
35
+ text-align: left;
36
+ transition: background-color 0.2s ease;
37
+ }
38
+ .dropdown__button:hover {
39
+ background-color: #0353c4;
40
+ }
41
+
42
+ .dropdown__content {
43
+ display: none;
44
+ top: 100%;
45
+ left: 0;
46
+ right: 0;
47
+ background-color: white;
48
+ z-index: 1000;
49
+ border-radius: 4px;
50
+ overflow: hidden;
51
+ margin-top: 4px;
52
+ animation: fadeIn 0.5s ease forwards;
53
+ }
54
+
55
+ .dropdown.open .dropdown__content {
56
+ display: block;
57
+ }
58
+
59
+ .dropdown__item {
60
+ white-space: normal;
61
+ word-wrap: break-word;
62
+ text-align: left;
63
+ padding: 10px 16px;
64
+ }
65
+
66
+ @keyframes fadeIn {
67
+ from {
68
+ opacity: 0;
69
+ transform: translateY(-5px);
70
+ }
71
+ to {
72
+ opacity: 1;
73
+ transform: translateY(0);
74
+ }
75
+ }
76
+
77
+ @media (max-width: 600px) {
78
+ .dropdown-section__container {
79
+ padding: 20px;
80
+ }
81
+ }
styles/footer.css ADDED
@@ -0,0 +1,113 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ footer {
2
+ width: 100%;
3
+ background-color: #171c27;
4
+ color: white;
5
+ padding: 20px 20px 10px 20px;
6
+ }
7
+
8
+ .footer-section {
9
+ max-width: 1400px;
10
+ margin: 45px auto 0 auto;
11
+ }
12
+
13
+ .footer__information {
14
+ max-width: 1000px;
15
+ margin-left: auto;
16
+ margin-right: auto;
17
+ display: flex;
18
+ justify-self: center;
19
+ justify-content: space-between;
20
+ flex-direction: row;
21
+ }
22
+
23
+ .airi-logo-section {
24
+ max-width: 180px;
25
+ display: flex;
26
+ flex-direction: column;
27
+ justify-content: start;
28
+
29
+ color: #8c9090;
30
+ }
31
+ .airi-logo-section > img {
32
+ width: 160px;
33
+ }
34
+ .airi-logo-section > p {
35
+ margin-top: 14px;
36
+ font-size: 12px;
37
+ }
38
+
39
+ .footer__mails {
40
+ display: flex;
41
+ flex-direction: column;
42
+ }
43
+
44
+ .copyrighted {
45
+ width: 100%;
46
+ text-align: center;
47
+ margin: 3vh auto 1vh auto;
48
+ color: #8c9090;
49
+ }
50
+
51
+ .gray {
52
+ color: #8c9090;
53
+ }
54
+
55
+ .mail {
56
+ font-size: 16px;
57
+ color: #fff;
58
+ transition: color 0.5s ease;
59
+ }
60
+
61
+ .mail:hover {
62
+ color: #2ebead;
63
+ }
64
+
65
+ .mail__description {
66
+ margin-bottom: 5px;
67
+ font-size: 14px;
68
+ color: #8c9090;
69
+ }
70
+
71
+ .media-logo {
72
+ margin: 5px 5px 5px 0;
73
+ fill: white;
74
+ transition: all 0.3s ease;
75
+ }
76
+
77
+ .media-logo:hover {
78
+ fill: #2fbead;
79
+ }
80
+
81
+ @media (max-width: 900px) {
82
+ .footer__information {
83
+ flex-direction: column;
84
+ justify-content: center;
85
+ }
86
+ .airi-logo {
87
+ margin-bottom: 50px;
88
+ }
89
+ .footer__information {
90
+ width: 100%;
91
+ padding: 0 5vw;
92
+ }
93
+
94
+ .footer__mails {
95
+ flex-direction: column;
96
+ width: 100%;
97
+ margin: 0;
98
+ }
99
+
100
+ .copyrighted {
101
+ width: 100%;
102
+ margin: 5vh 0 1vh 0;
103
+ }
104
+
105
+ .footer__social-media {
106
+ width: 100%;
107
+ padding: 0 5vw;
108
+ margin-bottom: 50px;
109
+ }
110
+ .mail__contanct {
111
+ margin: 20px 0 0 0;
112
+ }
113
+ }
styles/header.css ADDED
@@ -0,0 +1,104 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ header {
2
+ padding: 5vh 10vw 0 10vw;
3
+ width: 100%;
4
+ display: flex;
5
+ justify-content: center;
6
+
7
+ background: linear-gradient(
8
+ 180deg,
9
+ rgb(254, 243, 227) 0%,
10
+ rgba(255, 255, 255, 1) 100%
11
+ );
12
+ }
13
+ .header__container {
14
+ max-width: 800px;
15
+ font-family: 'Inter', sans-serif;
16
+ display: flex;
17
+ flex-direction: column;
18
+ align-items: center;
19
+ text-align: center;
20
+ }
21
+
22
+ .header__container > h1 {
23
+ text-align: center;
24
+ }
25
+
26
+ .header__link-container {
27
+ margin-bottom: 20px;
28
+ display: flex;
29
+ flex-wrap: wrap;
30
+ justify-content: center;
31
+ gap: 8px 15px;
32
+ line-height: 1.6;
33
+ margin-top: 50px;
34
+ width: 80%;
35
+ }
36
+
37
+ a {
38
+ font-size: 14px;
39
+ color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));
40
+ text-decoration: none;
41
+ }
42
+
43
+ .linkContainer__authors {
44
+ margin-bottom: 2vh;
45
+ }
46
+ .header__button-container {
47
+ margin-top: 20px;
48
+ display: flex;
49
+ flex-direction: row;
50
+ }
51
+ .header__button {
52
+ display: flex;
53
+ align-items: center;
54
+ padding: 25px 20px 25px 20px;
55
+ font-size: 16px;
56
+ width: 10em;
57
+ height: 40px;
58
+ margin: 2.5px;
59
+ border-radius: 30px;
60
+ background-color: #2ebead;
61
+ border: none;
62
+ color: #fff;
63
+ cursor: pointer;
64
+ transition: all 0.3s ease;
65
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0);
66
+ }
67
+
68
+ .header__button:hover {
69
+ transform: scale(1.05);
70
+ background-color: #29ac9d;
71
+ }
72
+
73
+ .header__button-logo {
74
+ position: absolute;
75
+ margin: 0;
76
+ }
77
+ .header__button-text {
78
+ font-size: 14px;
79
+ margin: 0 auto 0 auto;
80
+ text-align: center;
81
+ }
82
+ .header__participants-container {
83
+ margin-bottom: 40px;
84
+ }
85
+ .header__participants-logo {
86
+ width: 170px;
87
+ height: 120px;
88
+ }
89
+
90
+ @media (max-width: 600px) {
91
+ .header__participants-logo {
92
+ width: 150px;
93
+ }
94
+ .header__button-container {
95
+ flex-direction: column;
96
+ }
97
+ .header__link-container {
98
+ width: 90%;
99
+ }
100
+ .header__button {
101
+ width: 18em;
102
+ margin-bottom: 10px;
103
+ }
104
+ }
styles/lightbox.css ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .lighbox-container {
2
+ display: flex;
3
+ width: 100%;
4
+
5
+ flex-direction: column;
6
+ }
7
+
8
+ .lighbox-row {
9
+ display: flex;
10
+ justify-content: space-between;
11
+ }
12
+
13
+ .thumbnail {
14
+ cursor: pointer;
15
+ width: 250px;
16
+ height: auto;
17
+ border-radius: 8px;
18
+ transition: transform 0.2s ease;
19
+ }
20
+
21
+ .thumbnail:hover {
22
+ transform: scale(1.05);
23
+ }
24
+
25
+ .lightbox {
26
+ display: none;
27
+ position: fixed;
28
+ z-index: 9999;
29
+ left: 0;
30
+ top: 0;
31
+ width: 100%;
32
+ height: 100%;
33
+ overflow: auto;
34
+ background-color: rgba(0, 0, 0, 0.8);
35
+ backdrop-filter: blur(4px);
36
+ }
37
+
38
+ .lightbox-content {
39
+ margin: 5% auto;
40
+ display: block;
41
+ max-width: 90%;
42
+ max-height: 80vh;
43
+ animation: zoom 0.3s;
44
+ }
45
+
46
+ .close-btn {
47
+ position: absolute;
48
+ top: 20px;
49
+ right: 35px;
50
+ color: white;
51
+ font-size: 40px;
52
+ font-weight: bold;
53
+ cursor: pointer;
54
+ z-index: 10000;
55
+ }
56
+
57
+ .close-btn:hover,
58
+ .close-btn:focus {
59
+ color: #bbb;
60
+ text-decoration: none;
61
+ cursor: pointer;
62
+ }
63
+
64
+ @keyframes zoom {
65
+ from {
66
+ transform: scale(0);
67
+ }
68
+ to {
69
+ transform: scale(1);
70
+ }
71
+ }
72
+
73
+ @media (max-width: 600px) {
74
+ .lighbox-container {
75
+ padding: 20px;
76
+ }
77
+ }
styles/main.css ADDED
@@ -0,0 +1,84 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ body {
2
+ min-height: 100vh;
3
+ background-color: #fff;
4
+ display: flex;
5
+ flex-direction: column;
6
+ justify-content: center;
7
+ align-items: center;
8
+ }
9
+
10
+ main {
11
+ flex: 1;
12
+ }
13
+
14
+ section {
15
+ max-width: 800px;
16
+ margin-bottom: 100px;
17
+ }
18
+
19
+ .body-container {
20
+ font-family: 'Montserrat', sans-serif;
21
+ }
22
+
23
+ p,
24
+ h1,
25
+ h2,
26
+ h3,
27
+ ul,
28
+ li {
29
+ max-width: 660px;
30
+ text-align: left;
31
+ }
32
+
33
+ h1 {
34
+ width: 100%;
35
+ margin: 0;
36
+ font-weight: 700;
37
+ font-size: 38px;
38
+ }
39
+
40
+ p {
41
+ margin-bottom: 30px;
42
+ font-weight: 400;
43
+ text-align: left;
44
+ font-size: 16px;
45
+ line-height: 1.6;
46
+ }
47
+
48
+ h2 {
49
+ width: 100%;
50
+ margin: 0;
51
+ margin-bottom: 40px;
52
+ font-weight: 600;
53
+ font-size: 32px;
54
+ }
55
+
56
+ h3 {
57
+ font-size: 26px;
58
+ font-weight: 500;
59
+ }
60
+ li {
61
+ margin-bottom: 15px;
62
+ line-height: 1.6;
63
+ }
64
+ @media (max-width: 800px) {
65
+ .body-container {
66
+ width: 90vw;
67
+ }
68
+ }
69
+ @media (max-width: 600px) {
70
+ section {
71
+ margin-bottom: 45px;
72
+ }
73
+ h1 {
74
+ font-size: 30px;
75
+ }
76
+ h2 {
77
+ font-size: 24px;
78
+ margin-bottom: 25px;
79
+ }
80
+ p {
81
+ font-size: 16px;
82
+ margin-bottom: 20px;
83
+ }
84
+ }
styles/numberSection.css ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .numbers-section__container {
2
+ display: flex;
3
+ flex-direction: column;
4
+ justify-content: center;
5
+ text-align: center;
6
+ justify-items: center;
7
+ }
8
+
9
+ .numbers__container {
10
+ display: flex;
11
+ flex-direction: row;
12
+ justify-content: space-between;
13
+ }
14
+
15
+ .number__card {
16
+ margin-right: 10px;
17
+ }
18
+
19
+ .number__card > h1 {
20
+ width: fit-content;
21
+ margin-left: auto;
22
+ margin-right: auto;
23
+ }
24
+ .number__card > p {
25
+ text-align: center;
26
+ margin-bottom: 0;
27
+ }