diff --git a/TWA-App/Data/pages/company/2002.html b/TWA-App/Data/pages/company/2002.html
index 13956ef..6bf14fd 100644
--- a/TWA-App/Data/pages/company/2002.html
+++ b/TWA-App/Data/pages/company/2002.html
@@ -1,70 +1,350 @@
-
-
Cargo GSSA
-
We offers airlines end-to-end capacity management, maximizing yield with experts in reservations, handling, revenue accounting, and competitive market monitoring.
+
We offer airlines end-to-end capacity management, maximizing yield with experts in reservations, handling, revenue accounting, and competitive market monitoring.
Read More
diff --git a/TWA-App/wwwroot/css/atg-lib/atg-core.css b/TWA-App/wwwroot/css/atg-lib/atg-core.css
index 9eba3df..22a32d8 100644
--- a/TWA-App/wwwroot/css/atg-lib/atg-core.css
+++ b/TWA-App/wwwroot/css/atg-lib/atg-core.css
@@ -99,6 +99,10 @@ h1, h2, h3, h4, h5, h6, p {
text-align: center
}
+.text-right {
+ text-align: right
+}
+
.h-100vh {
min-height: 100vh;
}
diff --git a/TWA-App/wwwroot/css/site.css b/TWA-App/wwwroot/css/site.css
index 26c9d25..4112b4f 100644
--- a/TWA-App/wwwroot/css/site.css
+++ b/TWA-App/wwwroot/css/site.css
@@ -461,14 +461,27 @@ body[page="1000"] .sub-item .nav-link, .sub-item .nav-link {
}
.background {
+ overflow:hidden;
height: 100vh;
min-height: 800px;
- width: 100%;
- background-position: center center;
- background-size: cover;
- background-repeat: no-repeat;
- background-color: transparent
+ width: 100%
}
+ .background.overlay::before {
+ background-color: rgba(17, 39,88, 0.4);
+ z-index: 1;
+ content: '';
+ position: absolute;
+ width: 100%;
+ height: 100%
+ }
+
+.bg-content{
+ position:absolute;
+ width:100%;
+ top:50%;
+ transform: translateY(-50%)
+}
+
.swiperM {
border-radius: var(--radius);
min-height: 800px;
@@ -1289,7 +1302,7 @@ body[page="1000"] .ico-menu span {
margin-top: 0
}
- .our-section .sep {
+ .our-section .sep, .our-team-section .sep {
width: 8px;
border-radius: 5px;
height: 100%;
@@ -1899,7 +1912,7 @@ height: 100%
/**About US***************/
-body[page="2001"] .partner-section{
+body:not([page="1000"]) .partner-section{
padding: 80px 0
}
/*********End************/
@@ -2078,6 +2091,13 @@ video.bg-video {
/*************End Services*************/
/*****************Vision-Mission*********************/
+.grid-only{
+ opacity: .85;
+ background: var(--color-primary);
+ border-radius: var(--radius);
+ padding: 40px 40px 60px
+}
+
.n-b-t{
border-top-left-radius: 0;
border-top-right-radius: 0
@@ -2089,6 +2109,31 @@ video.bg-video {
.con-mision-vision{
margin-top:-40px
}
+
+.con-mision-vision .bg-content{
+ z-index:2;
+ color:#fff;
+}
+
+
+.con-mision-vision .u-content{
+ margin-top: 40px;
+ position: relative;
+ text-align: left;
+ bottom: 0
+}
+
+.u-content h2{
+ font-size: 2.2rem
+}
+
+@media (min-width: 992px){
+ .con-mision-vision .u-content {
+ text-align: right;
+ position: absolute;
+ bottom: -50px
+ }
+}
.mosaic {
min-height: 850px;
height: 100vh;
@@ -2143,4 +2188,90 @@ video.bg-video {
}
+.section-core-value .con-image{
+ margin: 4px;
+}
+
+.section-core-value .con-content{
+ padding: 40px;
+ max-width: 85%;
+ width:380px;
+ border-radius: var(--radius);
+ opacity:.85;
+ background: #000;
+ color: white;
+ position:absolute;
+ left:50%;
+ top:50%;
+ transform: translate(-50%, -50%)
+}
+
+
+@media (min-width:768px){
+ .section-core-value .con-content {
+ max-width: 380px;
+ }
+}
+@media (min-width: 1200px) {
+ .section-core-value .con-content {
+ width: 520px;
+ max-width: 520px
+ }
+}
+.section-core-value li{
+ color: var(--text-color-lW4)
+}
+
/*************End Services*************/
+.our-team-section{
+ padding-top:40px;
+}
+
+.our-team-section .block1{
+ margin-bottom: 40px
+}
+
+.grid-teams .grid{
+ margin: 0 5px;
+ margin-bottom:10px
+}
+
+.grid-teams .grid-thumb::before {
+ z-index: 1;
+ content: "";
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ height: 0%;
+ background-image: linear-gradient(45deg, var(--color-primary) 0%, rgb(119, 33, 44) 52%, rgb(35, 35, 49) 100%);
+ opacity: 0.6;
+ transition: 0.5s
+}
+
+.grid-teams .grid:hover .grid-thumb::before{
+ height:100%
+}
+
+.grid-content span{
+ font-size: .95rem
+}
+
+.grid-teams .grid-content {
+ position: absolute;
+ z-index: 2;
+ bottom: 0;
+ left: 0;
+ padding: 20px;
+ right: 0;
+ opacity: 0;
+ visibility: hidden;
+ transition: 0.5s;
+ color: #fff;
+}
+
+.grid-teams .grid:hover .grid-content {
+ opacity: 1;
+ visibility: visible;
+}
+
diff --git a/TWA-App/wwwroot/images/2000/2002/team-1.jpg b/TWA-App/wwwroot/images/2000/2002/team-1.jpg
new file mode 100644
index 0000000..d0a4a9b
Binary files /dev/null and b/TWA-App/wwwroot/images/2000/2002/team-1.jpg differ
diff --git a/TWA-App/wwwroot/images/2000/2002/team-2.jpg b/TWA-App/wwwroot/images/2000/2002/team-2.jpg
new file mode 100644
index 0000000..9f5a721
Binary files /dev/null and b/TWA-App/wwwroot/images/2000/2002/team-2.jpg differ
diff --git a/TWA-App/wwwroot/images/2000/2002/team-3.jpg b/TWA-App/wwwroot/images/2000/2002/team-3.jpg
new file mode 100644
index 0000000..3b7ef81
Binary files /dev/null and b/TWA-App/wwwroot/images/2000/2002/team-3.jpg differ
diff --git a/TWA-App/wwwroot/images/2000/2002/team-4.jpg b/TWA-App/wwwroot/images/2000/2002/team-4.jpg
new file mode 100644
index 0000000..eb354e5
Binary files /dev/null and b/TWA-App/wwwroot/images/2000/2002/team-4.jpg differ
diff --git a/TWA-App/wwwroot/images/2000/2002/team-5.jpg b/TWA-App/wwwroot/images/2000/2002/team-5.jpg
new file mode 100644
index 0000000..bf10936
Binary files /dev/null and b/TWA-App/wwwroot/images/2000/2002/team-5.jpg differ
diff --git a/TWA-App/wwwroot/images/2000/2003/cargo-loading.jpg b/TWA-App/wwwroot/images/2000/2003/cargo-loading.jpg
new file mode 100644
index 0000000..97527de
Binary files /dev/null and b/TWA-App/wwwroot/images/2000/2003/cargo-loading.jpg differ
diff --git a/TWA-App/wwwroot/images/2000/2003/data-analyst.jpg b/TWA-App/wwwroot/images/2000/2003/data-analyst.jpg
new file mode 100644
index 0000000..1f8eb63
Binary files /dev/null and b/TWA-App/wwwroot/images/2000/2003/data-analyst.jpg differ
diff --git a/TWA-App/wwwroot/images/2000/2003/meeting-handshake.jpg b/TWA-App/wwwroot/images/2000/2003/meeting-handshake.jpg
new file mode 100644
index 0000000..4fe2652
Binary files /dev/null and b/TWA-App/wwwroot/images/2000/2003/meeting-handshake.jpg differ
diff --git a/TWA-App/wwwroot/images/2000/2001/plbg-2003.jpg b/TWA-App/wwwroot/images/2000/2003/vision-mission.jpg
similarity index 100%
rename from TWA-App/wwwroot/images/2000/2001/plbg-2003.jpg
rename to TWA-App/wwwroot/images/2000/2003/vision-mission.jpg
diff --git a/TWA-App/wwwroot/js/js-page/2002.js b/TWA-App/wwwroot/js/js-page/2002.js
index 2dc4e26..f3e16d6 100644
--- a/TWA-App/wwwroot/js/js-page/2002.js
+++ b/TWA-App/wwwroot/js/js-page/2002.js
@@ -2,6 +2,107 @@
if (window["runParalax"] !== undefined) {
window["runParalax"]();
}
+ const swiper1 = new Swiper('.airlineSwiper', {
+ slidesPerView: 1,
+ spaceBetween: 30,
+ autoplay: {
+ delay: 2000, // 5s
+ disableOnInteraction: false, // không dừng khi hover hay click
+ },
+ loop: true, // bật loop để chạy liên tục
+ speed: 1000,
+ navigation: {
+ nextEl: ".swiper-button-next",
+ prevEl: ".swiper-button-prev",
+ },
+ loopedSlides: 5, // số slide duplicate
+ breakpoints: {
+ 1200: { slidesPerView: 4 }, // màn hình ≥1200px
+ 768: { slidesPerView: 3 }, // ≥768px=
+ 0: { slidesPerView: 2 } // <576px
+ },
+ });
+
+ const parallaxEls = document.querySelectorAll('.con-partner .parallax, .con-testimonial .parallax');
+ let ticking = false;
+ parallaxEls.forEach(el => {
+ const parent = el.closest(".con-parallax");
+ if (parent) {
+ parent.style.height = parent.querySelector("[data-content]").offsetHeight + "px";
+ }
+ });
+ window.app.on("App_Scrolling", (t) => {
+ if (!ticking) {
+ window.requestAnimationFrame(() => {
+ updateParallax(t, parallaxEls);
+ ticking = false;
+ });
+ ticking = true;
+ }
+ });
+ const swiper3 = new Swiper(".custSwiper", {
+ slidesPerView: 1,
+ spaceBetween: 0,
+ autoplay: {
+ delay: 2000, // 5s
+ disableOnInteraction: true,
+ },
+ loop: true, // bật loop để chạy liên tục
+ speed: 1000,
+ navigation: {
+ nextEl: ".swiper-button-next",
+ prevEl: ".swiper-button-prev",
+ },
+ loopedSlides: 5, // số slide duplicate
+ breakpoints: {
+ 992: { slidesPerView: 3 }, // màn hình ≥1200px
+ 576: { slidesPerView: 2 }, // ≥768px=
+ 0: { slidesPerView: 1 } // <576px
+ }
+ });
+}
+
+function updateParallax(t, parallaxEls) {
+ parallaxEls.forEach(el => {
+ const section = el.closest('.con-parallax');
+ if (!section) return;
+
+ const rect = section.getBoundingClientRect();
+ const sectionHeight = section.offsetHeight;
+
+ // Only process if the section is in the viewport or partially in it
+ const inView = rect.bottom > 0 && rect.top < window.innerHeight;
+ if (!inView) return;
+
+ // Set height parent only once
+ const content = section.querySelector('[data-content]');
+ if (content && !section.dataset.heightSet) {
+ section.style.height = content.offsetHeight + 'px';
+ section.dataset.heightSet = 'true'; // Mark that the height is set
+ section.dataset.initialTop = rect.top;
+ }
+
+ const img = el.querySelector('.bg-img');
+ if (!img) return;
+
+ const imgHeight = img.offsetHeight;
+ const depth = parseFloat(el.dataset.depth ?? 1); // 1 = moves fully, <1 = moves less
+ const initialTop = parseFloat(section.dataset.initialTop);
+
+ // Calculate how far the section has moved from its initial position
+ // Calculate progress for how much of the section is visible in the viewport
+ let a = 0
+ if (window.innerHeight - initialTop > 100) {
+ a = window.innerHeight - initialTop - rect.top - rect.bottom;
+ } else {
+ a = window.innerHeight - rect.top
+ }
+ const progress = Math.min(1, Math.max(0, a / (window.innerHeight + sectionHeight)));
+ const scrollable = imgHeight - sectionHeight;
+
+ let offsetY = -progress * scrollable * depth;
+ img.style.transform = `translate(-50%, ${offsetY}px)`;
+ });
}
window.AScript.set("2002", true);
\ No newline at end of file