6 Commits

62 changed files with 4598 additions and 12364 deletions

View File

@@ -1,53 +0,0 @@
/* ============================================
Accreditation Page — Scoped Styles
Scope: .accreditation-page
============================================ */
/* Typography — dùng div thay h1/h2/h3 */
.accreditation-page .acc-heading {
font-size: clamp(2.5rem, 5vw, 3.75rem);
line-height: 1.15;
}
.accreditation-page .acc-section-title {
font-size: 1.875rem;
line-height: 1.3;
}
.accreditation-page .acc-card-title {
font-size: 1.25rem;
line-height: 1.4;
}
/* ---------- Color tokens ---------- */
.accreditation-page .text-brand-blue { color: #1b254b; }
.accreditation-page .bg-brand-blue { background-color: #1b254b; }
.accreditation-page .bg-brand-light { background-color: #f8fbff; }
.accreditation-page .bg-brand-accent { background-color: #3b82f6; }
.accreditation-page .text-brand-accent { color: #3b82f6; }
.accreditation-page .text-ui-text { color: #111827; }
.accreditation-page .text-ui-muted { color: #6b7280; }
.accreditation-page .bg-ui-bg { background-color: #f9fafb; }
.accreditation-page .border-ui-border { border-color: #e5e7eb; }
/* ---------- Shadow tokens ---------- */
.accreditation-page .shadow-soft {
box-shadow: 0 1px 3px rgb(0 0 0 / 0.06), 0 1px 2px rgb(0 0 0 / 0.04);
}
.accreditation-page .shadow-hover,
.accreditation-page .hover\:shadow-hover:hover {
box-shadow: 0 8px 24px rgb(0 0 0 / 0.1);
}
/* ---------- Border radius fix ---------- */
.accreditation-page .rounded-\[24px\] { border-radius: 24px !important; }
.accreditation-page .rounded-lg { border-radius: 8px !important; }
.accreditation-page .rounded-md { border-radius: 6px !important; }
/* Mesh background gradient */
.accreditation-page .mesh-bg {
background: linear-gradient(135deg, #f0f4ff 0%, #e8f0fe 40%, #ffffff 100%);
}
/* rounded-xl fix */
.accreditation-page .rounded-xl { border-radius: 12px !important; }

View File

@@ -1,4 +1,3 @@
import "./accreditation.css";
import AccreditationHero from "../components/accreditation/AccreditationHero"; import AccreditationHero from "../components/accreditation/AccreditationHero";
import AccreditationGrid from "../components/accreditation/AccreditationGrid"; import AccreditationGrid from "../components/accreditation/AccreditationGrid";
import QualityStandards from "../components/accreditation/QualityStandards"; import QualityStandards from "../components/accreditation/QualityStandards";

View File

@@ -1,902 +0,0 @@
/* ============================================================
ABOUT PAGE
============================================================ */
.about-hero {
padding: 80px 0;
background-color: #f8fbff;
position: relative;
overflow: hidden;
}
.about-hero__content {
display: flex;
flex-direction: column;
gap: 1.5rem;
}
.about-hero__badge {
display: inline-flex;
align-items: center;
gap: 0.75rem;
}
.about-hero__badge-line {
display: inline-block;
width: 2rem;
height: 2px;
background: #1b254b;
}
.about-hero__badge-text {
font-size: 0.8rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.1em;
color: #6b7280;
}
.about-hero__title {
font-size: clamp(2rem, 4vw, 3.5rem);
font-weight: 700;
color: #1b254b;
line-height: 1.15;
margin: 0;
}
.about-hero__title span {
color: var(--theme, #E13833);
}
.about-hero__desc {
font-size: 1.05rem;
color: #6b7280;
line-height: 1.7;
max-width: 36rem;
margin: 0;
}
.about-hero__actions {
padding-top: 0.5rem;
}
.about-hero__btn {
display: inline-flex;
align-items: center;
gap: 0.5rem;
padding: 0.875rem 2rem;
background-color: #1b254b;
color: #ffffff;
font-weight: 600;
font-size: 1rem;
border-radius: 0.375rem;
border: none;
cursor: pointer;
box-shadow: 0 4px 6px -1px rgba(0,0,0,0.1), 0 2px 4px -2px rgba(0,0,0,0.1);
transition: background-color 0.2s ease;
}
.about-hero__btn:hover {
background-color: #151c3a;
}
/* Image side */
.about-hero__image-wrap {
position: relative;
border-radius: 1rem;
overflow: visible;
}
.about-hero__image {
width: 100%;
height: auto;
border-radius: 1rem;
object-fit: cover;
box-shadow: 0 25px 50px rgba(0, 0, 0, 0.12);
display: block;
}
/* Badge card overlay */
.about-hero__badge-card {
position: absolute;
bottom: -1.5rem;
left: -1.5rem;
background: #ffffff;
padding: 1.25rem 1.5rem;
border-radius: 0.75rem;
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.1);
border: 1px solid #e5e7eb;
display: flex;
align-items: center;
gap: 1rem;
}
@media (max-width: 767px) {
.about-hero__badge-card {
display: none;
}
}
.about-hero__badge-icon {
width: 3rem;
height: 3rem;
background: #f8fbff;
border-radius: 0.5rem;
display: flex;
align-items: center;
justify-content: center;
font-size: 1.25rem;
color: #1b254b;
flex-shrink: 0;
}
.about-hero__badge-value {
font-size: 1.5rem;
font-weight: 700;
color: #1b254b;
margin: 0;
}
.about-hero__badge-label {
font-size: 0.8rem;
color: #6b7280;
margin: 0;
}
@media (max-width: 991px) {
.about-hero {
padding: 80px 0 60px;
}
.about-hero__image-wrap {
margin-top: 3rem;
}
}
/* ------------------------------------------------------------
Mission & Values
------------------------------------------------------------ */
.about-mission {
padding: 80px 0;
background-color: #f8f8f9;
border-top: 1px solid #e5e7eb;
}
.about-mission__header {
max-width: 48rem;
margin: 0 auto 4rem;
}
.about-mission__badge {
display: inline-flex;
align-items: center;
gap: 0.75rem;
margin-bottom: 1rem;
}
.about-mission__badge-line {
display: inline-block;
width: 2rem;
height: 2px;
background: #E13833;
}
.about-mission__badge-text {
font-size: 0.8rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.1em;
color: #6b7280;
}
.about-mission__title {
font-size: clamp(1.75rem, 3vw, 2.25rem);
font-weight: 700;
color: #1b254b;
margin-bottom: 1rem;
}
.about-mission__subtitle {
font-size: 1.05rem;
color: #6b7280;
line-height: 1.7;
margin: 0;
}
.about-mission__grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 2rem;
}
@media (max-width: 991px) {
.about-mission__grid {
grid-template-columns: 1fr;
}
}
.about-mission__card {
background: #ffffff;
padding: 2rem;
border-radius: 0.75rem;
border: 1px solid #e5e7eb;
box-shadow: 0 1px 4px rgba(0,0,0,0.04);
transition: box-shadow 0.2s ease;
}
.about-mission__card:hover {
box-shadow: 0 8px 24px rgba(0,0,0,0.08);
}
.about-mission__icon-wrap {
width: 3.5rem;
height: 3.5rem;
background: #f8fbff;
border-radius: 0.5rem;
display: flex;
align-items: center;
justify-content: center;
font-size: 1.25rem;
color: #1b254b;
margin-bottom: 1.5rem;
border-top: 4px solid transparent;
transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}
.about-mission__card:hover .about-mission__icon-wrap {
background-color: #1b254b;
color: #ffffff;
border-top-color: #E13833;
}
.about-mission__card-title {
font-size: 1.125rem;
font-weight: 700;
color: #1b254b;
margin-bottom: 0.75rem;
}
.about-mission__card-desc {
font-size: 0.95rem;
color: #6b7280;
line-height: 1.7;
margin: 0;
}
/* ------------------------------------------------------------
Why Paris
------------------------------------------------------------ */
.why-paris {
padding: 80px 0;
background: #ffffff;
}
.why-paris__image-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1rem;
}
.why-paris__image-col {
display: flex;
flex-direction: column;
gap: 1rem;
}
.why-paris__image-col--offset {
padding-top: 2rem;
}
.why-paris__img {
width: 100%;
object-fit: cover;
border-radius: 0.75rem;
box-shadow: 0 4px 12px rgba(0,0,0,0.1);
display: block;
}
.why-paris__img--short { height: 12rem; }
.why-paris__img--tall { height: 16rem; }
.why-paris__content {
display: flex;
flex-direction: column;
gap: 1.25rem;
padding-left: 2rem;
}
@media (max-width: 991px) {
.why-paris__content {
padding-left: 0;
margin-bottom: 2.5rem;
}
}
.why-paris__title {
font-size: clamp(1.75rem, 3vw, 2.25rem);
font-weight: 700;
color: #1b254b;
margin: 0;
}
.why-paris__desc {
font-size: 1.05rem;
color: #6b7280;
line-height: 1.7;
margin: 0;
}
.why-paris__list {
list-style: none;
padding: 0;
margin: 0;
display: flex;
flex-direction: column;
gap: 1rem;
}
.why-paris__list-item {
display: flex;
align-items: flex-start;
gap: 0.75rem;
color: #1b254b;
font-size: 0.95rem;
}
.why-paris__check {
width: 1.25rem;
height: 1.25rem;
border-radius: 50%;
background: #f8fbff;
display: flex;
align-items: center;
justify-content: center;
color: #1b254b;
font-size: 0.65rem;
flex-shrink: 0;
margin-top: 2px;
}
.why-paris__btn {
display: inline-block;
margin-top: 0.5rem;
padding: 0.625rem 1.5rem;
background: #f8fbff;
color: #1b254b;
font-weight: 600;
font-size: 0.95rem;
border-radius: 0.375rem;
border: 1px solid #e5e7eb;
cursor: pointer;
transition: background-color 0.2s ease;
}
.why-paris__btn:hover {
background-color: #e5e7eb;
}
/* ------------------------------------------------------------
Leadership Message
------------------------------------------------------------ */
.about-message {
padding: 80px 0;
background: #ffffff;
}
.about-message__header {
margin-bottom: 2rem;
}
.about-message__title {
font-size: clamp(1.75rem, 3vw, 2.5rem);
font-weight: 700;
color: #1b254b;
margin-bottom: 1rem;
}
.about-message__divider {
width: 5rem;
height: 4px;
background: #E13833;
border-radius: 999px;
}
.about-message__body p {
color: #6b7280;
line-height: 1.8;
margin-bottom: 1.25rem;
}
.about-message__quote {
font-size: 1.2rem;
font-weight: 500;
color: #1b254b !important;
line-height: 1.7;
}
.about-message__author {
display: flex;
align-items: center;
gap: 1.25rem;
margin-top: 2rem;
padding: 1.5rem;
background: #f8f8f9;
border-radius: 1rem;
border: 1px solid #e5e7eb;
}
.about-message__avatar {
width: 5rem;
height: 5rem;
border-radius: 50%;
overflow: hidden;
border: 2px solid #E13833;
flex-shrink: 0;
}
.about-message__avatar img {
width: 100%;
height: 100%;
object-fit: cover;
}
.about-message__author-name {
font-size: 1.1rem;
font-weight: 700;
color: #1b254b;
margin: 0 0 0.25rem;
}
.about-message__author-role {
font-size: 0.875rem;
color: #E13833;
font-weight: 500;
margin: 0;
}
.about-message__quote-icon {
font-size: 3rem;
color: #1b254b;
opacity: 0.15;
margin-left: auto;
}
/* Sidebar */
.about-message__sidebar {
display: flex;
flex-direction: column;
gap: 1.25rem;
position: sticky;
top: 7rem;
}
.about-message__sidebar-card {
background: #f8f8f9;
padding: 2rem;
border-radius: 1.5rem;
border: 1px solid #e5e7eb;
}
.about-message__sidebar-card h3 {
font-size: 1.1rem;
font-weight: 700;
color: #1b254b;
margin-bottom: 0.75rem;
}
.about-message__sidebar-card p {
font-size: 0.875rem;
color: #6b7280;
margin-bottom: 1.25rem;
}
.about-message__sidebar-card--primary {
background: #1b254b;
}
.about-message__sidebar-card--primary h3,
.about-message__sidebar-card--primary p {
color: #ffffff;
}
.about-message__sidebar-card--primary p {
color: rgba(255,255,255,0.75);
}
.about-message__sidebar-link {
display: inline-flex;
align-items: center;
justify-content: space-between;
width: 100%;
background: #ffffff;
color: #1b254b;
padding: 0.75rem 1.5rem;
border-radius: 999px;
font-weight: 500;
font-size: 0.9rem;
text-decoration: none;
transition: background 0.2s;
}
.about-message__sidebar-link:hover { background: #f3f4f6; }
.about-message__sidebar-icon {
width: 3rem;
height: 3rem;
background: #ffffff;
border-radius: 0.75rem;
display: flex;
align-items: center;
justify-content: center;
font-size: 1.25rem;
color: #1b254b;
margin-bottom: 1rem;
box-shadow: 0 1px 4px rgba(0,0,0,0.08);
}
.about-message__sidebar-text-link {
display: inline-flex;
align-items: center;
gap: 0.5rem;
color: #1b254b;
font-weight: 500;
font-size: 0.9rem;
text-decoration: none;
}
.about-message__sidebar-text-link:hover { text-decoration: underline; }
.about-message__sidebar-outline-link {
display: flex;
align-items: center;
justify-content: center;
width: 100%;
border: 2px solid #1b254b;
color: #1b254b;
padding: 0.75rem 1.5rem;
border-radius: 999px;
font-weight: 500;
font-size: 0.9rem;
text-decoration: none;
transition: all 0.2s;
}
.about-message__sidebar-outline-link:hover {
background: #1b254b;
color: #ffffff;
}
/* ------------------------------------------------------------
Leadership Board
------------------------------------------------------------ */
.about-leadership {
padding: 80px 0;
background: #f8f8f9;
}
.about-leadership__header {
margin-bottom: 3rem;
}
.about-leadership__title {
font-size: clamp(1.75rem, 3vw, 2.25rem);
font-weight: 700;
color: #1b254b;
margin-bottom: 0.75rem;
}
.about-leadership__subtitle {
color: #6b7280;
font-size: 1.05rem;
margin: 0;
}
.about-leadership__grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 2rem;
}
@media (max-width: 991px) {
.about-leadership__grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 575px) {
.about-leadership__grid { grid-template-columns: 1fr; }
}
.about-leadership__card {
background: #ffffff;
border-radius: 0.75rem;
border: 1px solid #e5e7eb;
overflow: hidden;
transition: box-shadow 0.2s;
}
.about-leadership__card:hover { box-shadow: 0 8px 24px rgba(0,0,0,0.08); }
.about-leadership__photo-wrap {
height: 16rem;
overflow: hidden;
background: #f3f4f6;
}
.about-leadership__photo {
width: 100%;
height: 100%;
object-fit: cover;
transition: transform 0.5s ease;
}
.about-leadership__card:hover .about-leadership__photo { transform: scale(1.05); }
.about-leadership__info {
padding: 1.5rem;
text-align: center;
}
.about-leadership__name {
font-size: 1rem;
font-weight: 700;
color: #1b254b;
margin-bottom: 0.25rem;
}
.about-leadership__role {
font-size: 0.875rem;
color: #E13833;
font-weight: 500;
margin-bottom: 0.75rem;
}
.about-leadership__socials {
display: flex;
justify-content: center;
gap: 0.75rem;
}
.about-leadership__social-link {
color: #6b7280;
font-size: 1rem;
text-decoration: none;
transition: color 0.2s;
}
.about-leadership__social-link:hover { color: #1b254b; }
/* ------------------------------------------------------------
Campus
------------------------------------------------------------ */
.about-campus {
padding: 80px 0;
background: #f8f8f9;
}
.about-campus__header {
margin-bottom: 3rem;
}
.about-campus__title {
font-size: clamp(1.75rem, 3vw, 2.25rem);
font-weight: 700;
color: #1b254b;
margin-bottom: 0.75rem;
}
.about-campus__subtitle {
color: #6b7280;
max-width: 40rem;
margin: 0 auto;
}
.about-campus__grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 2rem;
}
@media (max-width: 991px) {
.about-campus__grid { grid-template-columns: 1fr; }
}
.about-campus__card {
background: #ffffff;
border-radius: 1.5rem;
overflow: hidden;
box-shadow: 0 2px 8px rgba(0,0,0,0.06);
transition: box-shadow 0.2s;
}
.about-campus__card:hover { box-shadow: 0 12px 32px rgba(0,0,0,0.1); }
.about-campus__img-wrap {
height: 12rem;
overflow: hidden;
}
.about-campus__img {
width: 100%;
height: 100%;
object-fit: cover;
transition: transform 0.5s ease;
}
.about-campus__card:hover .about-campus__img { transform: scale(1.05); }
.about-campus__body {
padding: 2rem;
}
.about-campus__tag {
display: inline-block;
padding: 0.2rem 0.75rem;
border-radius: 999px;
font-size: 0.75rem;
font-weight: 700;
margin-bottom: 1rem;
}
.about-campus__tag--blue { background: #eff6ff; color: #1b254b; }
.about-campus__tag--yellow { background: #fefce8; color: #854d0e; }
.about-campus__tag--green { background: #f0fdf4; color: #166534; }
.about-campus__card-title {
font-size: 1.1rem;
font-weight: 700;
color: #1b254b;
margin-bottom: 0.75rem;
}
.about-campus__card-desc {
font-size: 0.875rem;
color: #6b7280;
line-height: 1.6;
margin-bottom: 1.5rem;
}
.about-campus__link {
display: inline-flex;
align-items: center;
gap: 0.5rem;
color: #1b254b;
font-weight: 500;
font-size: 0.875rem;
text-decoration: none;
transition: gap 0.2s;
}
.about-campus__link:hover { gap: 0.75rem; }
/* ------------------------------------------------------------
History Timeline
------------------------------------------------------------ */
.about-timeline {
padding: 80px 0;
background: #1b254b;
color: #ffffff;
}
.about-timeline__header { margin-bottom: 3rem; }
.about-timeline__title {
font-size: clamp(1.75rem, 3vw, 2.5rem);
font-weight: 700;
color: #ffffff;
margin-bottom: 0.75rem;
}
.about-timeline__subtitle { color: rgba(255,255,255,0.65); font-size: 1rem; margin: 0; }
.about-timeline__track {
max-width: 44rem;
margin: 0 auto;
position: relative;
padding: 1rem 0;
}
/* Vertical line chạy giữa track */
.about-timeline__line {
position: absolute;
left: 50%;
top: 0;
bottom: 0;
width: 2px;
margin-left: -1px;
background: rgba(100,160,255,0.3);
}
.about-timeline__item {
display: flex;
margin-bottom: 3.5rem;
width: 100%;
position: relative;
}
.about-timeline__item:last-child { margin-bottom: 0; }
/* Content chiếm nửa trái hoặc phải */
.about-timeline__content {
width: calc(50% - 1.5rem);
}
/* Dot nằm absolute giữa line */
.about-timeline__dot-wrap {
position: absolute;
left: 50%;
top: 0.3rem;
transform: translateX(-50%);
z-index: 2;
display: flex;
align-items: center;
justify-content: center;
}
/* Spacer chiếm nửa còn lại */
.about-timeline__spacer {
width: calc(50% - 1.5rem);
}
/* Left: content bên trái, text align right */
.about-timeline__item--left .about-timeline__content {
text-align: right;
order: 1;
margin-right: 3rem;
}
.about-timeline__item--left .about-timeline__dot-wrap { order: 2; }
.about-timeline__item--left .about-timeline__spacer { order: 3; }
/* Right: spacer bên trái, content bên phải */
.about-timeline__item--right .about-timeline__spacer { order: 1; }
.about-timeline__item--right .about-timeline__dot-wrap { order: 2; }
.about-timeline__item--right .about-timeline__content {
text-align: left;
order: 3;
margin-left: 3rem;
}
.about-timeline__dot {
width: 1.25rem;
height: 1.25rem;
border-radius: 50%;
background: transparent;
border: 2px solid #74b3ff;
box-shadow: 0 0 0 4px rgba(116,179,255,0.15);
flex-shrink: 0;
}
.about-timeline__year {
font-size: 1.75rem;
font-weight: 700;
color: #ffffff;
margin-bottom: 0.25rem;
line-height: 1;
}
.about-timeline__event {
font-size: 0.95rem;
font-weight: 600;
color: #74b3ff;
margin-bottom: 0.5rem;
}
.about-timeline__desc {
font-size: 0.875rem;
color: rgba(255,255,255,0.65);
line-height: 1.6;
margin: 0;
max-width: 18rem;
}
.about-timeline__item--left .about-timeline__desc { margin-left: auto; }
.about-timeline__item--right .about-timeline__desc { margin-right: auto; }
@media (max-width: 767px) {
.about-timeline__line { left: 0.75rem; }
.about-timeline__item { flex-direction: column; align-items: flex-start; padding-left: 2.5rem; }
.about-timeline__item--left .about-timeline__content,
.about-timeline__item--right .about-timeline__content { text-align: left; padding: 0; order: 2; }
.about-timeline__item--left .about-timeline__desc,
.about-timeline__item--right .about-timeline__desc { margin: 0; max-width: 100%; }
.about-timeline__dot-wrap { position: absolute; left: 0; top: 0.25rem; order: 1; }
.about-timeline__spacer { display: none; }
}

View File

@@ -1,514 +0,0 @@
/* ============================================================
HOME PAGE — shared styles
============================================================ */
/* ------------------------------------------------------------
Hero Section
------------------------------------------------------------ */
.hero-home {
position: relative;
width: 100%;
height: 560px;
background-color: #1b254b;
overflow: hidden;
display: flex;
align-items: center;
}
.hero-home__overlay {
position: absolute;
inset: 0;
opacity: 0.2;
}
.hero-home__bg-img {
width: 100%;
height: 100%;
object-fit: cover;
mix-blend-mode: overlay;
}
.hero-home__gradient {
position: absolute;
inset: 0;
background: linear-gradient(to right, #1b254b, rgba(27, 37, 75, 0.9), transparent);
}
.hero-home__container {
position: relative;
z-index: 2;
max-width: 1440px;
margin: 0 auto;
padding: 0 1.5rem;
width: 100%;
}
@media (min-width: 1024px) {
.hero-home__container {
padding: 0 2rem;
}
}
.hero-home__content {
max-width: 42rem;
display: flex;
flex-direction: column;
gap: 1.5rem;
}
/* Badge */
.hero-home__badge {
display: inline-flex;
align-items: center;
gap: 0.5rem;
padding: 0.375rem 0.75rem;
border-radius: 9999px;
background: rgba(255, 255, 255, 0.1);
border: 1px solid rgba(255, 255, 255, 0.2);
backdrop-filter: blur(4px);
width: fit-content;
}
.hero-home__badge-dot {
width: 0.5rem;
height: 0.5rem;
border-radius: 50%;
background: #60a5fa;
animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}
@keyframes pulse {
0%, 100% { opacity: 1; }
50% { opacity: 0.5; }
}
.hero-home__badge-text {
font-size: 0.75rem;
font-weight: 600;
color: #bfdbfe;
text-transform: uppercase;
letter-spacing: 0.05em;
}
/* Title */
.hero-home__title {
font-size: 3rem;
font-weight: 700;
color: #ffffff;
line-height: 1.2;
letter-spacing: -0.02em;
margin: 0;
}
@media (min-width: 1024px) {
.hero-home__title {
font-size: 3.75rem;
}
}
/* Description */
.hero-home__desc {
font-size: 1.125rem;
color: #bfdbfe;
line-height: 1.7;
max-width: 36rem;
margin: 0;
}
/* Actions */
.hero-home__actions {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 1rem;
padding-top: 1rem;
}
/* Buttons */
.hero-home__btn {
display: inline-flex;
align-items: center;
gap: 0.5rem;
padding: 0.75rem 1.5rem;
border-radius: 0.5rem;
font-weight: 600;
font-size: 1rem;
cursor: pointer;
transition: all 0.2s ease-in-out;
border: none;
}
.hero-home__btn--primary {
background: #ffffff;
color: #1b254b;
box-shadow: 0 4px 6px -1px rgba(0,0,0,0.1), 0 2px 4px -2px rgba(0,0,0,0.1);
}
.hero-home__btn--primary:hover {
background: #f9fafb;
}
.hero-home__btn--secondary {
background: rgba(255, 255, 255, 0.1);
color: #ffffff;
border: 1px solid rgba(255, 255, 255, 0.2);
backdrop-filter: blur(4px);
}
.hero-home__btn--secondary:hover {
background: rgba(255, 255, 255, 0.2);
}
/* ------------------------------------------------------------
Research Impact Section
------------------------------------------------------------ */
.research-impact {
padding: 80px 0;
background-color: #f8fbff;
}
.research-impact__header {
display: flex;
align-items: center;
justify-content: space-between;
flex-wrap: wrap;
gap: 0.5rem;
margin-bottom: 2.5rem;
}
.research-impact__title {
font-size: 1.6rem;
font-weight: 700;
color: #1b254b;
margin: 0;
}
.research-impact__year {
font-size: 0.85rem;
font-weight: 500;
color: #6b7280;
background: #e5e7eb;
padding: 4px 12px;
border-radius: 999px;
}
.research-impact__stats {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 1.25rem;
margin-bottom: 2rem;
}
@media (max-width: 991px) {
.research-impact__stats {
grid-template-columns: repeat(2, 1fr);
}
}
@media (max-width: 575px) {
.research-impact__stats {
grid-template-columns: 1fr;
}
}
.research-impact__stat-card {
background: #ffffff;
border: 1px solid #e5e7eb;
border-radius: 12px;
padding: 1.5rem;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
}
.research-impact__stat-label {
font-size: 0.8rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.06em;
color: #6b7280;
margin-bottom: 0.5rem;
}
.research-impact__stat-value-row {
display: flex;
align-items: baseline;
gap: 0.5rem;
margin-bottom: 0.25rem;
}
.research-impact__stat-value {
font-size: 2rem;
font-weight: 700;
color: #1b254b;
line-height: 1;
}
.research-impact__stat-trend {
font-size: 0.78rem;
font-weight: 600;
padding: 2px 8px;
border-radius: 999px;
}
.research-impact__stat-trend--up {
background: #d1fae5;
color: #065f46;
}
.research-impact__stat-trend--down {
background: #fee2e2;
color: #991b1b;
}
.research-impact__stat-trend--stable {
background: #e5e7eb;
color: #374151;
}
.research-impact__stat-sub {
font-size: 0.8rem;
color: #9ca3af;
margin: 0;
}
.research-impact__charts {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1.25rem;
}
@media (max-width: 767px) {
.research-impact__charts {
grid-template-columns: 1fr;
}
}
.research-impact__chart-card {
background: #ffffff;
border: 1px solid #e5e7eb;
border-radius: 12px;
padding: 1.75rem;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
}
.research-impact__chart-title {
font-size: 1rem;
font-weight: 600;
color: #1b254b;
margin-bottom: 0.25rem;
}
.research-impact__chart-sub {
font-size: 0.8rem;
color: #9ca3af;
margin-bottom: 1.25rem;
}
.research-impact__bar-chart {
display: flex;
align-items: flex-end;
gap: 1.5rem;
height: 160px;
padding-top: 1rem;
}
.research-impact__bar-group {
display: flex;
flex-direction: column;
align-items: center;
gap: 0.5rem;
flex: 1;
}
.research-impact__bar {
width: 100%;
border-radius: 6px 6px 0 0;
min-height: 8px;
transition: height 0.4s ease;
}
.research-impact__bar--journals {
background: #1b254b;
}
.research-impact__bar--conferences {
background: #74c0fc;
}
.research-impact__bar-label {
font-size: 0.78rem;
color: #6b7280;
font-weight: 500;
}
.research-impact__donut-wrapper {
display: flex;
align-items: center;
gap: 1.5rem;
flex-wrap: wrap;
}
.research-impact__donut {
width: 120px;
height: 120px;
border-radius: 50%;
flex-shrink: 0;
-webkit-mask: radial-gradient(circle, transparent 40%, black 41%);
mask: radial-gradient(circle, transparent 40%, black 41%);
}
.research-impact__legend {
list-style: none;
padding: 0;
margin: 0;
display: flex;
flex-direction: column;
gap: 0.5rem;
}
.research-impact__legend-item {
display: flex;
align-items: center;
gap: 0.5rem;
font-size: 0.85rem;
}
.research-impact__legend-dot {
width: 10px;
height: 10px;
border-radius: 50%;
flex-shrink: 0;
}
.research-impact__legend-label {
color: #374151;
flex: 1;
}
.research-impact__legend-value {
font-weight: 600;
color: #1b254b;
}
/* ------------------------------------------------------------
Quick Links Grid
------------------------------------------------------------ */
.quick-links {
padding: 80px 0;
background: #ffffff;
}
.quick-links__header {
margin-bottom: 3rem;
}
.quick-links__title {
font-size: clamp(1.75rem, 3vw, 2.25rem);
font-weight: 700;
color: #1b254b;
margin-bottom: 0.75rem;
}
.quick-links__subtitle {
color: #6b7280;
max-width: 40rem;
margin: 0 auto;
}
.quick-links__grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 1.5rem;
}
@media (max-width: 991px) {
.quick-links__grid {
grid-template-columns: repeat(2, 1fr);
}
}
@media (max-width: 575px) {
.quick-links__grid {
grid-template-columns: 1fr;
}
}
.quick-links__card {
display: flex;
flex-direction: column;
background: #f8fbff;
padding: 2rem;
border-radius: 1.5rem;
border: 1px solid transparent;
text-decoration: none;
transition: box-shadow 0.2s ease, border-color 0.2s ease;
cursor: pointer;
}
.quick-links__card:hover {
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.08);
border-color: #e5e7eb;
}
.quick-links__icon-wrap {
width: 3.5rem;
height: 3.5rem;
background: #ffffff;
border-radius: 0.75rem;
display: flex;
align-items: center;
justify-content: center;
font-size: 1.25rem;
color: #1b254b;
margin-bottom: 1.5rem;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
transition: transform 0.2s ease;
}
.quick-links__card:hover .quick-links__icon-wrap {
transform: scale(1.1);
}
.quick-links__card-title {
font-size: 1.125rem;
font-weight: 700;
color: #1b254b;
margin-bottom: 0.75rem;
}
.quick-links__card-desc {
font-size: 0.875rem;
color: #6b7280;
line-height: 1.6;
flex: 1;
margin-bottom: 1.5rem;
}
.quick-links__card-footer {
display: flex;
justify-content: space-between;
align-items: center;
}
.quick-links__cta {
font-size: 0.875rem;
font-weight: 500;
color: #1b254b;
}
.quick-links__arrow {
width: 2rem;
height: 2rem;
border-radius: 50%;
background: #1b254b;
color: #ffffff;
display: flex;
align-items: center;
justify-content: center;
font-size: 0.75rem;
opacity: 0;
transition: opacity 0.2s ease;
}
.quick-links__card:hover .quick-links__arrow {
opacity: 1;
}

View File

@@ -0,0 +1,45 @@
import React from 'react';
const PublicationHeader = () => {
return (
<section id="repo-header">
<div className="max-w-[1440px] mx-auto px-6 lg:px-8">
{/* Title row + action buttons */}
<div className="flex flex-col lg:flex-row justify-between items-start lg:items-end gap-6 mb-8 w-full">
<div className="flex-1 max-w-3xl">
<h1>Publication Repository</h1>
<p>Search, filter, and access over 15,000 academic publications and research papers.</p>
</div>
<div className="flex gap-3 shrink-0">
<button className="pub-btn-outline">
<i className="fa-regular fa-bookmark"></i>
Saved Searches
</button>
<button className="pub-btn-primary">
<i className="fa-solid fa-download"></i>
Export Results
</button>
</div>
</div>
{/* Search bar */}
<div className="pub-search-bar">
<span className="pub-search-icon">
<i className="fa-solid fa-magnifying-glass"></i>
</span>
<input
type="text"
placeholder="Search by title, author, keyword, or DOI..."
/>
<div className="pub-search-btn-wrap">
<button className="pub-btn-primary">Search</button>
</div>
</div>
</div>
</section>
);
};
export default PublicationHeader;

View File

@@ -0,0 +1,169 @@
'use client';
import React, { useState } from 'react';
import Link from 'next/link';
const SORT_OPTIONS = ['Relevance', 'Newest First', 'Oldest First', 'Most Cited'];
const PublicationResults = () => {
const [isSortOpen, setIsSortOpen] = useState(false);
const [selectedSort, setSelectedSort] = useState('Relevance');
return (
<div className="pub-results">
{/* Toolbar */}
<div className="pub-results-toolbar">
<p className="pub-results-count">
Showing <strong>1-10</strong> of <strong>12,450</strong> results
</p>
<div className="pub-sort-wrap">
<label>Sort by:</label>
<div className="pub-sort-dropdown">
<button
className={`pub-sort-dropdown-btn ${isSortOpen ? 'open' : ''}`}
onClick={() => setIsSortOpen(!isSortOpen)}
>
<span>{selectedSort}</span>
<i className="fa-solid fa-chevron-down"></i>
</button>
{isSortOpen && (
<div className="pub-sort-dropdown-menu">
{SORT_OPTIONS.map((opt) => (
<div
key={opt}
className={`pub-sort-dropdown-option ${selectedSort === opt ? 'selected' : ''}`}
onClick={() => { setSelectedSort(opt); setIsSortOpen(false); }}
>
{opt}
</div>
))}
</div>
)}
</div>
</div>
</div>
{/* Cards */}
<div className="pub-card-list">
{/* Card 1 */}
<div className="pub-card">
<div className="pub-card-top">
<h3 className="pub-card-title">
<Link href="#">The Evolution of Democratic Institutions in Post-War Europe</Link>
</h3>
<div className="pub-badges">
<span className="pub-badge pub-badge-open">
<i className="fa-solid fa-lock-open"></i> Open Access
</span>
<span className="pub-badge pub-badge-peer">Peer Reviewed</span>
</div>
</div>
<div className="pub-card-meta">
<div className="pub-meta-item">
<i className="fa-solid fa-user"></i>
<strong>Dr. Elena Rostova</strong>, Prof. Marcus Chen
</div>
<div className="pub-meta-item">
<i className="fa-regular fa-calendar"></i> October 2024
</div>
<div className="pub-meta-item">
<i className="fa-solid fa-link"></i> DOI: 10.1038/s41586-024
</div>
<div className="pub-meta-item">
<i className="fa-solid fa-building-columns"></i> Center for Political Studies
</div>
</div>
<p className="pub-card-abstract">
This paper examines the structural shifts in Western European democratic frameworks from 1945 to 1980. By analyzing institutional archives across France, Germany, and Italy, the research identifies a distinct divergence in how parliamentary powers were consolidated versus distributed. The findings challenge traditional narratives of a uniform democratic resurgence, suggesting instead that local historical contexts heavily dictated the adoption of specific liberal norms.
</p>
<div className="pub-keywords">
<span className="pub-keywords-label">Keywords:</span>
<span className="pub-keyword-tag">Democracy</span>
<span className="pub-keyword-tag">European History</span>
<span className="pub-keyword-tag">Institutions</span>
</div>
<div className="pub-card-actions">
<button className="pub-action-btn pub-action-btn-primary">
<i className="fa-solid fa-file-pdf"></i> View PDF
</button>
<button className="pub-action-btn pub-action-btn-secondary">
<i className="fa-solid fa-quote-right"></i> Cite
</button>
<button className="pub-action-btn pub-action-btn-secondary">
<i className="fa-regular fa-bookmark"></i> Save
</button>
</div>
</div>
{/* Card 2 */}
<div className="pub-card">
<div className="pub-card-top">
<h3 className="pub-card-title">
<Link href="#">Cognitive Linguistics and the Framing of Modern Ethics</Link>
</h3>
<div className="pub-badges">
<span className="pub-badge pub-badge-institutional">
<i className="fa-solid fa-building-user"></i> Institutional
</span>
</div>
</div>
<div className="pub-card-meta">
<div className="pub-meta-item">
<i className="fa-solid fa-user"></i>
<strong>Dr. Sarah Jenkins</strong>
</div>
<div className="pub-meta-item">
<i className="fa-regular fa-calendar"></i> August 2024
</div>
<div className="pub-meta-item">
<i className="fa-solid fa-link"></i> DOI: 10.1016/j.cogling.2024
</div>
</div>
<p className="pub-card-abstract">
An exploration into how metaphor and cognitive framing shape contemporary ethical debates. The study utilizes computational linguistics to analyze over 10,000 policy documents and public speeches, demonstrating a significant correlation between specific metaphorical structures and the resulting ethical policy frameworks adopted by legislative bodies.
</p>
<div className="pub-card-actions">
<button className="pub-action-btn pub-action-btn-primary">
<i className="fa-solid fa-arrow-right-to-bracket"></i> Login to Access
</button>
<button className="pub-action-btn pub-action-btn-secondary">
<i className="fa-solid fa-quote-right"></i> Cite
</button>
</div>
</div>
</div>
{/* Pagination */}
<div className="pub-pagination">
<button className="pub-page-btn" disabled>
<i className="fa-solid fa-arrow-left"></i> Previous
</button>
<div className="pub-page-numbers">
<button className="pub-page-num active">1</button>
<button className="pub-page-num">2</button>
<button className="pub-page-num">3</button>
<span className="pub-page-ellipsis">...</span>
<button className="pub-page-num">124</button>
</div>
<button className="pub-page-btn">
Next <i className="fa-solid fa-arrow-right"></i>
</button>
</div>
</div>
);
};
export default PublicationResults;

View File

@@ -0,0 +1,123 @@
'use client';
import React, { useState } from 'react';
const YEARS = ['2024 (1,245)', '2023 (3,412)', '2022 (2,890)'];
const DOMAINS = ['Liberal Arts (4,521)', 'Social Sciences (3,210)', 'Humanities (2,980)', 'Political Science (1,840)'];
const ACCESS_TYPES = ['Open Access', 'Institutional Login', 'Request Access'];
const AccordionSection = ({
title,
open,
onToggle,
children,
}: {
title: string;
open: boolean;
onToggle: () => void;
children: React.ReactNode;
}) => (
<div className="pub-accordion-item">
<button
className={`pub-accordion-trigger ${open ? 'open' : ''}`}
onClick={onToggle}
>
{title}
<i className="fa-solid fa-chevron-down"></i>
</button>
<div className={`pub-accordion-body ${open ? 'open' : ''}`}>
{children}
</div>
</div>
);
const PublicationSidebar = () => {
const [isYearOpen, setIsYearOpen] = useState(true);
const [isDomainOpen, setIsDomainOpen] = useState(true);
const [isAccessOpen, setIsAccessOpen] = useState(true);
const [minYear, setMinYear] = useState('');
const [maxYear, setMaxYear] = useState('');
return (
<aside className="pub-sidebar">
<div className="pub-sidebar-inner">
<div className="pub-sidebar-header">
<h2>
<i className="fa-solid fa-filter"></i> Filters
</h2>
<button
className="pub-clear-btn"
onClick={() => { setMinYear(''); setMaxYear(''); }}
>
Clear All
</button>
</div>
<div className="pub-accordion">
{/* Publication Year */}
<AccordionSection title="Publication Year" open={isYearOpen} onToggle={() => setIsYearOpen(!isYearOpen)}>
<div className="pub-filter-list">
{YEARS.map((year, idx) => (
<label key={year} className="pub-filter-label">
<input
type="checkbox"
className="pub-checkbox"
defaultChecked={idx === 0}
/>
<span>{year}</span>
</label>
))}
<div className="pub-year-range">
<input
type="number"
placeholder="Min"
value={minYear}
onChange={(e) => setMinYear(e.target.value)}
/>
<input
type="number"
placeholder="Max"
value={maxYear}
onChange={(e) => setMaxYear(e.target.value)}
/>
</div>
</div>
</AccordionSection>
{/* Research Domain */}
<AccordionSection title="Research Domain" open={isDomainOpen} onToggle={() => setIsDomainOpen(!isDomainOpen)}>
<div className="pub-filter-list">
{DOMAINS.map((domain, idx) => (
<label key={domain} className="pub-filter-label">
<input
type="checkbox"
className="pub-checkbox"
defaultChecked={idx === 0}
/>
<span>{domain}</span>
</label>
))}
</div>
</AccordionSection>
{/* Access Type */}
<AccordionSection title="Access Type" open={isAccessOpen} onToggle={() => setIsAccessOpen(!isAccessOpen)}>
<div className="pub-filter-list">
{ACCESS_TYPES.map((type) => (
<label key={type} className="pub-filter-label">
<input type="checkbox" className="pub-checkbox" />
<span>{type}</span>
</label>
))}
</div>
</AccordionSection>
</div>
</div>
</aside>
);
};
export default PublicationSidebar;

View File

@@ -0,0 +1,208 @@
import React from 'react';
// Khối chứa 2 cột: Active Projects Feed và Funding Calls
const ProjectsAndCenters = () => {
return (
<section id="projects-centers">
<div className="max-w-[1440px] mx-auto px-6 lg:px-8">
<div className="grid grid-cols-1 lg:grid-cols-12 gap-12">
{/* --- CỘT TRÁI (7/12): ACTIVE PROJECTS LIST --- */}
<div className="lg:col-span-7">
<div className="flex items-center justify-between mb-8">
<h2 className="text-2xl font-bold text-ui-text">Active Projects Feed</h2>
<a href="#" className="text-sm font-medium text-brand-accent hover:text-brand-blue transition-colors">
View All Projects
</a>
</div>
<div className="space-y-4">
{/* Project Item 1 */}
<div className="project-card">
<div className="project-icon project-icon-blue">
<i className="text-2xl text-brand-blue inline-flex">
<svg className="w-6 h-6" aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
<path fill="currentColor" d="M160 32c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32c17.7 0 32 14.3 32 32V288c0 17.7-14.3 32-32 32c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32c-17.7 0-32-14.3-32-32V64c0-17.7 14.3-32 32-32zM32 448H320c70.7 0 128-57.3 128-128s-57.3-128-128-128V128c106 0 192 86 192 192c0 49.2-18.5 94-48.9 128H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm80-64H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z"></path>
</svg>
</i>
</div>
<div className="flex-grow">
<div className="flex flex-wrap items-center gap-2 mb-2">
<span className="badge badge-active">Active</span>
<span className="text-xs text-ui-muted font-medium inline-flex items-center gap-1">
<i className="inline-flex">
<svg className="w-3 h-3" aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
<path fill="currentColor" d="M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM232 120V256c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2V120c0-13.3-10.7-24-24-24s-24 10.7-24 24z"></path>
</svg>
</i>
Updated 2d ago
</span>
</div>
<h4 className="text-lg font-bold text-ui-text mb-1">Urban Microclimate Modeling</h4>
<p className="text-sm text-ui-muted line-clamp-2 mb-3">
Developing high-resolution predictive models for heat island effects in European metropolitan areas using machine learning.
</p>
<div className="flex items-center justify-between">
<div className="flex -space-x-2">
<img className="w-8 h-8 rounded-full border-2 border-white object-cover" src="https://storage.googleapis.com/uxpilot-auth.appspot.com/avatars/avatar-4.jpg" alt="Researcher" title="Dr. Alan Turing" />
<img className="w-8 h-8 rounded-full border-2 border-white object-cover" src="https://storage.googleapis.com/uxpilot-auth.appspot.com/avatars/avatar-5.jpg" alt="Researcher" title="Dr. Marie Curie" />
<div className="w-8 h-8 rounded-full border-2 border-white bg-ui-bg flex items-center justify-center text-[10px] font-bold text-ui-muted">+3</div>
</div>
<div className="w-32">
<div className="flex justify-between text-xs mb-1">
<span className="text-ui-muted">Progress</span>
<span className="font-medium">65%</span>
</div>
<div className="progress-bar-track">
<div className="progress-bar-fill progress-fill-blue" style={{ width: '65%' }}></div>
</div>
</div>
</div>
</div>
</div>
{/* Project Item 2 */}
<div className="project-card">
<div className="project-icon project-icon-purple">
<i className="text-2xl text-purple-600 inline-flex">
<svg className="w-6 h-6" aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
<path fill="currentColor" d="M318.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-120 120c-12.5-12.5-12.5 32.8 0 45.3l16 16c12.5 12.5 32.8 12.5 45.3 0l4-4L325.4 293.4l-4 4c-12.5 12.5-12.5 32.8 0 45.3l16 16c12.5 12.5 32.8 12.5 45.3 0l120-120c12.5-12.5 12.5-32.8 0-45.3l-16-16c-12.5-12.5-32.8-12.5-45.3 0l-4 4L330.6 74.6l4-4c12.5-12.5 12.5-32.8 0-45.3l-16-16zm-152 288c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l48 48c12.5 12.5 32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-1.4-1.4L272 285.3 226.7 240 168 298.7l-1.4-1.4z"></path>
</svg>
</i>
</div>
<div className="flex-grow">
<div className="flex flex-wrap items-center gap-2 mb-2">
<span className="badge badge-collection">Data Collection</span>
<span className="text-xs text-ui-muted font-medium inline-flex items-center gap-1">
<i className="inline-flex">
<svg className="w-3 h-3" aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
<path fill="currentColor" d="M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM232 120V256c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2V120c0-13.3-10.7-24-24-24s-24 10.7-24 24z"></path>
</svg>
</i>
Updated 1w ago
</span>
</div>
<h4 className="text-lg font-bold text-ui-text mb-1">Digital Rights in the EU Framework</h4>
<p className="text-sm text-ui-muted line-clamp-2 mb-3">
A comparative analysis of member state implementation of digital privacy directives and their impact on civil liberties.
</p>
<div className="flex items-center justify-between">
<div className="flex -space-x-2">
<img className="w-8 h-8 rounded-full border-2 border-white object-cover" src="https://storage.googleapis.com/uxpilot-auth.appspot.com/avatars/avatar-6.jpg" alt="Researcher" />
<img className="w-8 h-8 rounded-full border-2 border-white object-cover" src="https://storage.googleapis.com/uxpilot-auth.appspot.com/avatars/avatar-7.jpg" alt="Researcher" />
</div>
<div className="w-32">
<div className="flex justify-between text-xs mb-1">
<span className="text-ui-muted">Progress</span>
<span className="font-medium">30%</span>
</div>
<div className="progress-bar-track">
<div className="progress-bar-fill progress-fill-accent" style={{ width: '30%' }}></div>
</div>
</div>
</div>
</div>
</div>
{/* Project Item 3 */}
<div className="project-card">
<div className="project-icon project-icon-orange">
<i className="text-2xl text-orange-600 inline-flex">
<svg className="w-6 h-6" aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
<path fill="currentColor" d="M512 80c0 18-14.3 34.6-38.4 48c-29.1 16.1-72.5 27.5-122.3 30.9c-3.7-1.8-7.4-3.5-11.3-5C300.6 137.4 248.2 128 192 128c-8.3 0-16.4 .2-24.5 .6l-1.1-.6C142.3 114.6 128 98 128 80c0-44.2 86-80 192-80S512 35.8 512 80zM160.7 161.1c10.2-.7 20.7-1.1 31.3-1.1c62.2 0 117.4 12.3 152.5 31.4C369.3 204.9 384 221.7 384 240c0 4-.7 7.9-2.1 11.7c-4.6 13.2-17 25.3-35 35.5c0 0 0 0 0 0c-.1 .1-.3 .1-.4 .2l0 0 0 0c-.3 .2-.6 .3-.9 .5c-35 19.4-90.8 32-153.6 32c-59.6 0-112.9-11.3-148.2-29.1c-1.9-.9-3.7-1.9-5.5-2.9C14.3 274.6 0 258 0 240c0-34.8 53.4-64.5 128-75.4c10.5-1.5 21.4-2.7 32.7-3.5zM416 240c0-21.9-10.6-39.9-24.1-53.4c28.3-4.4 54.2-11.4 76.2-20.5c16.3-6.8 31.5-15.2 43.9-25.5V176c0 19.3-16.5 37.1-43.8 50.9c-14.6 7.4-32.4 13.7-52.4 18.5c.1-1.8 .2-3.5 .2-5.3zm-32 96c0 18-14.3 34.6-38.4 48c-1.8 1-3.6 1.9-5.5 2.9C304.9 404.7 251.6 416 192 416c-62.8 0-118.6-12.6-153.6-32C14.3 370.6 0 354 0 336V300.6c12.5 10.3 27.6 18.7 43.9 25.5C83.4 342.6 135.8 352 192 352s108.6-9.4 148.1-25.9c7.8-3.2 15.3-6.9 22.4-10.9c6.1-3.4 11.8-7.2 17.2-11.2c1.5-1.1 2.9-2.3 4.3-3.4V304v5.7V336zm32 0V304 278.1c19-4.2 36.5-9.5 52.1-16c16.3-6.8 31.5-15.2 43.9-25.5V272c0 10.5-5 21-14.9 30.9c-16.3 16.3-45 29.7-81.3 38.4c.1-1.7 .2-3.5 .2-5.3zM192 448c56.2 0 108.6-9.4 148.1-25.9c16.3-6.8 31.5-15.2 43.9-25.5V432c0 44.2-86 80-192 80S0 476.2 0 432V396.6c12.5 10.3 27.6 18.7 43.9 25.5C83.4 438.6 135.8 448 192 448z"></path>
</svg>
</i>
</div>
<div className="flex-grow">
<div className="flex flex-wrap items-center gap-2 mb-2">
<span className="badge badge-review">Review</span>
<span className="text-xs text-ui-muted font-medium inline-flex items-center gap-1">
<i className="inline-flex">
<svg className="w-3 h-3" aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
<path fill="currentColor" d="M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM232 120V256c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2V120c0-13.3-10.7-24-24-24s-24 10.7-24 24z"></path>
</svg>
</i>
Updated 3w ago
</span>
</div>
<h4 className="text-lg font-bold text-ui-text mb-1">Behavioral Impacts of Universal Basic Income</h4>
<p className="text-sm text-ui-muted line-clamp-2 mb-3">
Longitudinal study tracking spending habits and employment outcomes in selected pilot regions across France.
</p>
<div className="flex items-center justify-between">
<div className="flex -space-x-2">
<img className="w-8 h-8 rounded-full border-2 border-white object-cover" src="https://storage.googleapis.com/uxpilot-auth.appspot.com/avatars/avatar-8.jpg" alt="Researcher" />
<img className="w-8 h-8 rounded-full border-2 border-white object-cover" src="https://storage.googleapis.com/uxpilot-auth.appspot.com/avatars/avatar-9.jpg" alt="Researcher" />
<img className="w-8 h-8 rounded-full border-2 border-white object-cover" src="https://storage.googleapis.com/uxpilot-auth.appspot.com/avatars/avatar-1.jpg" alt="Researcher" />
</div>
<div className="w-32">
<div className="flex justify-between text-xs mb-1">
<span className="text-ui-muted">Progress</span>
<span className="font-medium">90%</span>
</div>
<div className="progress-bar-track">
<div className="progress-bar-fill progress-fill-blue" style={{ width: '90%' }}></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{/* --- CỘT PHẢI (5/12): FUNDING CALLS --- */}
<div className="lg:col-span-5">
<div className="flex items-center justify-between mb-8">
<h2 className="text-2xl font-bold text-ui-text">Funding Calls</h2>
</div>
<div className="funding-card">
<div className="space-y-4 flex-grow">
{/* Item 1 */}
<div className="funding-item">
<span className="funding-label-urgent">Closing Soon</span>
<h4>EU Horizon 2025: Sustainable Tech</h4>
<div className="funding-meta">
<span className="funding-due">
<i className="fa-regular fa-calendar"></i> Due Nov 15
</span>
<a href="#" className="funding-link">
Details <i className="fa-solid fa-arrow-right" style={{fontSize:'0.625rem'}}></i>
</a>
</div>
</div>
{/* Item 2 */}
<div className="funding-item">
<span className="funding-label-internal">Internal Grant</span>
<h4>Seed Funding for AI Ethics</h4>
<div className="funding-meta">
<span className="funding-due">
<i className="fa-regular fa-calendar"></i> Due Dec 01
</span>
<a href="#" className="funding-link">
Details <i className="fa-solid fa-arrow-right" style={{fontSize:'0.625rem'}}></i>
</a>
</div>
</div>
</div>
<button className="funding-view-all">
View All Opportunities
</button>
</div>
</div>
</div>
</div>
</section>
);
};
export default ProjectsAndCenters;

View File

@@ -0,0 +1,167 @@
import React from 'react';
// Khối chứa danh sách các lĩnh vực nghiên cứu.
const ResearchDomains = () => {
return (
<section id="research-domains">
<div className="max-w-[1440px] mx-auto px-6 lg:px-8">
{/* Tiêu đề Section */}
<div className="text-center mb-16">
<h2 className="text-3xl lg:text-4xl font-bold text-ui-text mb-4">Research Domains</h2>
<p className="text-ui-muted max-w-2xl mx-auto">
Discover our core areas of expertise, where interdisciplinary teams tackle complex global challenges.
</p>
</div>
{/* Grid chứa các thẻ (Cards) */}
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
{/* Domain Card 1 (Nổi bật - Màu xanh) */}
<div className="folder-tab folder-tab-blue group">
{/* Hiệu ứng Glow */}
<div className="absolute top-0 right-0 w-32 h-32 bg-white/10 rounded-full blur-2xl -translate-y-1/2 translate-x-1/2 group-hover:scale-150 transition-transform duration-500"></div>
<div className="domain-icon-blue">
<i className="text-2xl text-white inline-flex">
<svg className="w-6 h-6" aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512">
<path fill="currentColor" d="M384 32H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H398.4c-5.2 25.8-22.9 47.1-46.4 57.3V448H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 128c-17.7 0-32-14.3-32-32s14.3-32 32-32H288V153.3c-23.5-10.3-41.2-31.6-46.4-57.3H128c-17.7 0-32-14.3-32-32s14.3-32 32-32H256c14.6-19.4 37.8-32 64-32s49.4 12.6 64 32zm55.6 288H584.4L512 195.8 439.6 320zM512 416c-62.9 0-115.2-34-126-78.9c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1C627.2 382 574.9 416 512 416zM126.8 195.8L54.4 320H199.3L126.8 195.8zM.9 337.1c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1C242 382 189.7 416 126.8 416S11.7 382 .9 337.1z"></path>
</svg>
</i>
</div>
<h3 className="text-2xl font-bold mb-4">Law & Policy</h3>
<p className="text-white/80 text-sm leading-relaxed mb-8 flex-grow">
Investigating the evolution of international law, human rights, and public policy in a rapidly changing geopolitical landscape.
</p>
<div className="domain-card-footer">
<span className="domain-badge-glass">42 Centers</span>
<i className="text-white/70 group-hover:text-white group-hover:translate-x-1 transition-all inline-flex">
<svg className="w-4 h-4" aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512">
<path fill="currentColor" d="M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z"></path>
</svg>
</i>
</div>
</div>
{/* Domain Card 2 */}
<div className="folder-tab folder-tab-light group">
<div className="domain-icon-light">
<i className="text-2xl text-brand-blue inline-flex">
<svg className="w-6 h-6" aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
<path fill="currentColor" d="M184 0c30.9 0 56 25.1 56 56V456c0 30.9-25.1 56-56 56c-28.9 0-52.7-21.9-55.7-50.1c-5.2 1.4-10.7 2.1-16.3 2.1c-35.3 0-64-28.7-64-64c0-7.4 1.3-14.6 3.6-21.2C21.4 367.4 0 338.2 0 304c0-31.9 18.7-59.5 45.8-72.3C37.1 220.8 32 207 32 192c0-30.7 21.6-56.3 50.4-62.6C80.8 123.9 80 118 80 112c0-29.9 20.6-55.1 48.3-62.1C131.3 21.9 155.1 0 184 0zM328 0c28.9 0 52.6 21.9 55.7 49.9c27.8 7 48.3 32.1 48.3 62.1c0 6-.8 11.9-2.4 17.4c28.8 6.2 50.4 31.9 50.4 62.6c0 15-5.1 28.8-13.8 39.7C493.3 244.5 512 272.1 512 304c0 34.2-21.4 63.4-51.6 74.8c2.3 6.6 3.6 13.8 3.6 21.2c0 35.3-28.7 64-64 64c-5.6 0-11.1-.7-16.3-2.1c-3 28.2-26.8 50.1-55.7 50.1c-30.9 0-56-25.1-56-56V56c0-30.9 25.1-56 56-56z"></path>
</svg>
</i>
</div>
<h3 className="text-2xl font-bold mb-4">Cognitive Science</h3>
<p className="text-ui-muted text-sm leading-relaxed mb-8 flex-grow">
Bridging psychology, neuroscience, and artificial intelligence to understand human cognition and behavior.
</p>
<div className="domain-card-footer">
<span className="domain-badge-white">28 Centers</span>
<i className="text-ui-muted group-hover:text-brand-blue group-hover:translate-x-1 transition-all inline-flex">
<svg className="w-4 h-4" aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512">
<path fill="currentColor" d="M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z"></path>
</svg>
</i>
</div>
</div>
{/* Domain Card 3 */}
<div className="folder-tab folder-tab-light group">
<div className="domain-icon-light">
<i className="text-2xl text-brand-blue inline-flex">
<svg className="w-6 h-6" aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
<path fill="currentColor" d="M266.3 48.3L232.5 73.6c-5.4 4-8.5 10.4-8.5 17.1v9.1c0 6.8 5.5 12.3 12.3 12.3c2.4 0 4.8-.7 6.8-2.1l41.8-27.9c2-1.3 4.4-2.1 6.8-2.1h1c6.2 0 11.3 5.1 11.3 11.3c0 3-1.2 5.9-3.3 8l-19.9 19.9c-5.8 5.8-12.9 10.2-20.7 12.8l-26.5 8.8c-5.8 1.9-9.6 7.3-9.6 13.4c0 3.7-1.5 7.3-4.1 10l-17.9 17.9c-6.4 6.4-9.9 15-9.9 24v4.3c0 16.4 13.6 29.7 29.9 29.7c11 0 21.2-6.2 26.1-16l4-8.1c2.4-4.8 7.4-7.9 12.8-7.9c4.5 0 8.7 2.1 11.4 5.7l16.3 21.7c2.1 2.9 5.5 4.5 9.1 4.5c8.4 0 13.9-8.9 10.1-16.4l-1.1-2.3c-3.5-7 0-15.5 7.5-18l21.2-7.1c7.6-2.5 12.7-9.6 12.7-17.6c0-10.3 8.3-18.6 18.6-18.6H400c8.8 0 16 7.2 16 16s-7.2 16-16 16H379.3c-7.2 0-14.2 2.9-19.3 8l-4.7 4.7c-2.1 2.1-3.3 5-3.3 8c0 6.2 5.1 11.3 11.3 11.3h11.3c6 0 11.8 2.4 16 6.6l6.5 6.5c1.8 1.8 2.8 4.3 2.8 6.8s-1 5-2.8 6.8l-7.5 7.5C386 262 384 266.9 384 272s2 10 5.7 13.7L408 304c10.2 10.2 24.1 16 38.6 16H454c6.5-20.2 10-41.7 10-64c0-111.4-87.6-202.4-197.7-207.7zm172 307.9c-3.7-2.6-8.2-4.1-13-4.1c-6 0-11.8-2.4-16-6.6L396 332c-7.7-7.7-18-12-28.9-12c-9.7 0-19.2-3.5-26.6-9.8L314 287.4c-11.6-9.9-26.4-15.4-41.7-15.4H251.4c-12.6 0-25 3.7-35.5 10.7L188.5 301c-17.8 11.9-28.5 31.9-28.5 53.3v3.2c0 17 6.7 33.3 18.7 45.3l16 16c8.5 8.5 20 13.3 32 13.3H248c13.3 0 24 10.7 24 24c0 2.5 .4 5 1.1 7.3c71.3-5.8 132.5-47.6 165.2-107.2zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM187.3 100.7c-6.2-6.2-16.4-6.2-22.6 0l-32 32c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l32-32c6.2-6.2 6.2-16.4 0-22.6z"></path>
</svg>
</i>
</div>
<h3 className="text-2xl font-bold mb-4">Environmental Studies</h3>
<p className="text-ui-muted text-sm leading-relaxed mb-8 flex-grow">
Developing sustainable solutions for climate change, resource management, and ecological preservation.
</p>
<div className="domain-card-footer">
<span className="domain-badge-white">35 Centers</span>
<i className="text-ui-muted group-hover:text-brand-blue group-hover:translate-x-1 transition-all inline-flex">
<svg className="w-4 h-4" aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512">
<path fill="currentColor" d="M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z"></path>
</svg>
</i>
</div>
</div>
{/* Domain Card 4 */}
<div className="folder-tab folder-tab-light group">
<div className="domain-icon-light">
<i className="text-2xl text-brand-blue inline-flex">
<svg className="w-6 h-6" aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
<path fill="currentColor" d="M248 0h16c13.3 0 24 10.7 24 24V34.7C368.4 48.1 431.9 111.6 445.3 192H448c17.7 0 32 14.3 32 32s-14.3 32-32 32H64c-17.7 0-32-14.3-32-32s14.3-32 32-32h2.7C80.1 111.6 143.6 48.1 224 34.7V24c0-13.3 10.7-24 24-24zM64 288h64V416h40V288h64V416h48V288h64V416h40V288h64V420.3c.6 .3 1.2 .7 1.7 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512H32c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1V288z"></path>
</svg>
</i>
</div>
<h3 className="text-2xl font-bold mb-4">History & Humanities</h3>
<p className="text-ui-muted text-sm leading-relaxed mb-8 flex-grow">
Preserving cultural heritage and analyzing historical contexts to inform contemporary societal debates.
</p>
<div className="domain-card-footer">
<span className="domain-badge-white">50 Centers</span>
<i className="text-ui-muted group-hover:text-brand-blue group-hover:translate-x-1 transition-all inline-flex">
<svg className="w-4 h-4" aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512">
<path fill="currentColor" d="M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z"></path>
</svg>
</i>
</div>
</div>
{/* Domain Card 5 */}
<div className="folder-tab folder-tab-light group">
<div className="domain-icon-light">
<i className="text-2xl text-brand-blue inline-flex">
<svg className="w-6 h-6" aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
<path fill="currentColor" d="M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V400c0 44.2 35.8 80 80 80H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H80c-8.8 0-16-7.2-16-16V64zm406.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L320 210.7l-57.4-57.4c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5-12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L240 221.3l57.4 57.4c12.5 12.5 32.8 12.5 45.3 0l128-128z"></path>
</svg>
</i>
</div>
<h3 className="text-2xl font-bold mb-4">Economics</h3>
<p className="text-ui-muted text-sm leading-relaxed mb-8 flex-grow">
Analyzing global markets, behavioral economics, and policy impacts on socioeconomic development.
</p>
<div className="domain-card-footer">
<span className="domain-badge-white">19 Centers</span>
<i className="text-ui-muted group-hover:text-brand-blue group-hover:translate-x-1 transition-all inline-flex">
<svg className="w-4 h-4" aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512">
<path fill="currentColor" d="M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z"></path>
</svg>
</i>
</div>
</div>
{/* Domain Card 6 - CTA */}
<div className="domain-card-cta group">
<div className="domain-icon-cta">
<i className="text-2xl text-brand-blue inline-flex">
<svg className="w-6 h-6" aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512">
<path fill="currentColor" d="M256 80c0-17.7-14.3-32-32-32s-32 14.3-32 32V224H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H192V432c0 17.7 14.3 32 32 32s32-14.3 32-32V288H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H256V80z"></path>
</svg>
</i>
</div>
<h3 className="text-xl font-bold mb-2">View All Domains</h3>
<p className="text-ui-muted text-sm">Explore our complete directory of 15+ research areas.</p>
</div>
</div>
</div>
</section>
);
};
export default ResearchDomains;

View File

@@ -0,0 +1,101 @@
'use client';
import React from 'react';
import { useRouter } from 'next/navigation';
const ResearchHero = () => {
const router = useRouter();
return (
<section id="research-hero">
<div className="max-w-[1440px] mx-auto px-6 lg:px-8">
<div className="flex flex-col lg:flex-row gap-12 items-center">
{/* --- CỘT TRÁI --- */}
<div className="w-full lg:w-1/2 hero-left">
{/* Label: gạch ngang + "Research Hub" */}
<div className="hero-label">
<span className="hero-label-line"></span>
<span className="hero-label-text">Research Hub</span>
</div>
{/* Heading */}
<h1>
Pioneering <br />
<span>Discovery</span>
</h1>
{/* Description */}
<p className="hero-desc">
Explore our cutting-edge research domains, active projects, and interdisciplinary centers driving innovation in liberal arts and sciences.
</p>
{/* Buttons */}
<div className="hero-buttons">
<button className="r-btn-primary" onClick={() => router.push('/research/search')}>
Browse Projects <i className="fa-solid fa-arrow-right text-sm"></i>
</button>
<button className="r-btn-outline">
View Publications
</button>
</div>
</div>
{/* --- CỘT PHẢI: Visual composition --- */}
<div className="w-full lg:w-1/2 relative">
<div className="relative w-full aspect-square max-w-[600px] mx-auto">
{/* Glow nền */}
<div className="absolute inset-0 bg-brand-light rounded-full blur-3xl opacity-50"></div>
{/* Main image card */}
<div className="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[80%] h-[80%] bg-white rounded-[32px] border border-ui-border shadow-2xl overflow-hidden z-10">
<img
className="w-full h-full object-cover"
src="https://storage.googleapis.com/uxpilot-auth.appspot.com/11d578de27-837b09c2ea77020bcb48.png"
alt="Research laboratory"
/>
<div className="absolute inset-0 bg-gradient-to-t from-black/60 via-transparent to-transparent"></div>
<div className="absolute bottom-0 left-0 p-6 w-full text-white">
<div className="flex items-center gap-2 mb-2">
<span className="px-3 py-1 text-white text-xs font-bold rounded-full" style={{ backgroundColor: 'var(--r-accent)' }}>
Featured
</span>
</div>
<h3 className="text-xl font-bold mb-1" style={{ fontFamily: 'Inter, sans-serif' }}>Cognitive Sciences Lab</h3>
<p className="text-sm opacity-90" style={{ fontFamily: 'Inter, sans-serif' }}>Exploring the intersection of AI and human psychology.</p>
</div>
</div>
{/* Floating stat card 1 — Publications */}
<div className="r-stat-card" style={{ top: '10%', right: '5%' }}>
<div className="w-12 h-12 rounded-full flex items-center justify-center" style={{ backgroundColor: 'var(--r-blue-light)', color: 'var(--r-blue)' }}>
<i className="fa-solid fa-book-open text-xl"></i>
</div>
<div>
<p className="text-2xl font-bold" style={{ color: 'var(--r-text)', fontFamily: 'Inter, sans-serif' }}>12k+</p>
<p className="text-xs font-medium" style={{ color: 'var(--r-muted)', fontFamily: 'Inter, sans-serif' }}>Publications</p>
</div>
</div>
{/* Floating stat card 2 — Active Projects */}
<div className="r-stat-card" style={{ bottom: '15%', left: '0%' }}>
<div className="w-12 h-12 rounded-full flex items-center justify-center" style={{ backgroundColor: '#f0fdf4', color: '#16a34a' }}>
<i className="fa-solid fa-flask text-xl"></i>
</div>
<div>
<p className="text-2xl font-bold" style={{ color: 'var(--r-text)', fontFamily: 'Inter, sans-serif' }}>340</p>
<p className="text-xs font-medium" style={{ color: 'var(--r-muted)', fontFamily: 'Inter, sans-serif' }}>Active Projects</p>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
);
};
export default ResearchHero;

View File

@@ -0,0 +1,68 @@
import React from 'react';
// Khối chứa 2 banner: Research Guidance và Publication Repository
const ResearchResources = () => {
return (
<section id="research-quick-links">
<div className="max-w-[1440px] mx-auto px-6 lg:px-8">
<div className="grid grid-cols-1 md:grid-cols-2 gap-8">
{/* --- Banner 1: Guidance Link --- */}
<a href="#" className="resource-card group">
<div className="resource-card-glow"></div>
<div className="relative z-10 flex items-start gap-6">
<div className="resource-icon">
<i className="text-3xl text-brand-blue inline-flex">
<svg className="w-8 h-8" aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
<path fill="currentColor" d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm50.7-186.9L162.4 380.6c-19.4 7.5-38.5-11.6-31-31l55.5-144.3c3.3-8.5 9.9-15.1 18.4-18.4l144.3-55.5c19.4-7.5 38.5 11.6 31 31L325.1 306.7c-3.2 8.5-9.9 15.1-18.4 18.4zM288 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"></path>
</svg>
</i>
</div>
<div>
<h3 className="text-2xl font-bold text-ui-text mb-2 group-hover:text-brand-blue transition-colors">
Research Guidance
</h3>
<p className="text-ui-muted leading-relaxed mb-4">
Access comprehensive resources, ethical guidelines, grant application support, and methodological frameworks for your research journey.
</p>
<span className="resource-link">
Access Portal
<i className="fa-solid fa-arrow-right group-hover:translate-x-1 transition-transform"></i>
</span>
</div>
</div>
</a>
{/* --- Banner 2: Repository Link --- */}
<a href="#" className="resource-card group">
<div className="resource-card-glow"></div>
<div className="relative z-10 flex items-start gap-6">
<div className="resource-icon">
<i className="text-3xl text-brand-blue inline-flex">
<svg className="w-8 h-8" aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512">
<path fill="currentColor" d="M0 96C0 43 43 0 96 0h96V190.7c0 13.4 15.5 20.9 26 12.5L272 160l54 43.2c10.5 8.4 26 .9 26-12.5V0h32 32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32z"></path>
</svg>
</i>
</div>
<div>
<h3 className="text-2xl font-bold text-ui-text mb-2 group-hover:text-brand-blue transition-colors">
Publication Repository
</h3>
<p className="text-ui-muted leading-relaxed mb-4">
Browse, search, and request access to thousands of peer-reviewed papers, dissertations, and datasets produced by ULP scholars.
</p>
<span className="resource-link">
Search Repository
<i className="fa-solid fa-arrow-right group-hover:translate-x-1 transition-transform"></i>
</span>
</div>
</div>
</a>
</div>
</div>
</section>
);
};
export default ResearchResources;

View File

@@ -0,0 +1,115 @@
'use client';
import React, { useState } from 'react';
import { useRouter } from 'next/navigation';
const ResearchSearch = () => {
const [query, setQuery] = useState('');
const [activeFilter, setActiveFilter] = useState('Researchers');
const filters = ['Researchers', 'Labs', 'Projects', 'Institutes'];
const router = useRouter();
const handleSearch = () => {
const params = new URLSearchParams({ q: query, type: activeFilter });
router.push(`/research/search?${params.toString()}`);
};
return (
<div className="max-w-5xl mx-auto mb-10" style={{ padding: '0 1rem' }}>
{/* Search bar */}
<div className="relative">
<div className="absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none">
<i className="fa-solid fa-magnifying-glass" style={{ color: '#9ca3af' }}></i>
</div>
<input
type="text"
value={query}
onChange={(e) => setQuery(e.target.value)}
onKeyDown={(e) => e.key === 'Enter' && handleSearch()}
placeholder="Search across researchers, labs, projects, and disciplines..."
style={{
width: '100%',
paddingLeft: '3rem',
paddingRight: '8rem',
paddingTop: '1rem',
paddingBottom: '1rem',
backgroundColor: '#ffffff',
border: '1px solid #e5e7eb',
borderRadius: '1rem',
boxShadow: '0 1px 2px 0 rgba(0,0,0,0.05)',
fontSize: '1rem',
color: '#374151',
outline: 'none',
transition: 'border-color 0.2s, box-shadow 0.2s',
boxSizing: 'border-box',
}}
onFocus={(e) => {
e.target.style.borderColor = '#263c6f';
e.target.style.boxShadow = '0 0 0 2px rgba(38,60,111,0.15)';
}}
onBlur={(e) => {
e.target.style.borderColor = '#e5e7eb';
e.target.style.boxShadow = '0 1px 2px 0 rgba(0,0,0,0.05)';
}}
/>
<div className="absolute flex items-center" style={{ top: '0.5rem', bottom: '0.5rem', right: '0.5rem' }}>
<button
onClick={handleSearch}
style={{
backgroundColor: '#263c6f',
color: '#ffffff',
padding: '0.5rem 1.5rem',
borderRadius: '0.75rem',
fontSize: '0.875rem',
fontWeight: 500,
border: 'none',
cursor: 'pointer',
height: '100%',
transition: 'opacity 0.2s',
}}
onMouseEnter={(e) => (e.currentTarget.style.opacity = '0.9')}
onMouseLeave={(e) => (e.currentTarget.style.opacity = '1')}
>
Search
</button>
</div>
</div>
{/* Filter pills */}
<div className="flex gap-3 mt-4 px-2" style={{ flexWrap: 'wrap', alignItems: 'center' }}>
<span style={{ fontSize: '0.75rem', fontWeight: 500, color: '#6b7280', textTransform: 'uppercase', letterSpacing: '0.05em', marginTop: '0.25rem' }}>
Filters:
</span>
{filters.map((filter) => (
<button
key={filter}
onClick={() => setActiveFilter(filter)}
style={{
fontSize: '0.75rem',
fontWeight: 500,
padding: '0.25rem 0.75rem',
borderRadius: '9999px',
border: 'none',
cursor: 'pointer',
transition: 'background-color 0.2s',
backgroundColor: activeFilter === filter ? 'rgba(38,60,111,0.1)' : '#f3f4f6',
color: activeFilter === filter ? '#263c6f' : '#4b5563',
}}
onMouseEnter={(e) => {
if (activeFilter !== filter) e.currentTarget.style.backgroundColor = '#e5e7eb';
}}
onMouseLeave={(e) => {
if (activeFilter !== filter) e.currentTarget.style.backgroundColor = '#f3f4f6';
}}
>
{filter}
</button>
))}
</div>
</div>
);
};
export default ResearchSearch;

View File

@@ -0,0 +1,79 @@
'use client';
import React, { useState } from 'react';
import { useRouter } from 'next/navigation';
const FILTERS = ['Researchers', 'Labs', 'Projects', 'Institutes'];
const ResearchSearchHeader = () => {
const [query, setQuery] = useState('');
const [activeFilter, setActiveFilter] = useState('Researchers');
const router = useRouter();
const handleSearch = () => {
const params = new URLSearchParams({ q: query, type: activeFilter });
router.push(`/research/search?${params.toString()}`);
};
return (
<section id="repo-header">
<div className="max-w-[1440px] mx-auto px-6 lg:px-8">
{/* Title row */}
<div className="flex flex-col lg:flex-row justify-between items-start lg:items-end gap-6 mb-8 w-full">
<div className="flex-1 max-w-3xl">
<h1>Research Search</h1>
<p>Search across researchers, labs, active projects, and institutes.</p>
</div>
<div className="flex gap-3 shrink-0">
<button className="pub-btn-outline" onClick={() => router.back()}>
<i className="fa-solid fa-arrow-left"></i>
Back to Research
</button>
</div>
</div>
{/* Search bar */}
<div className="pub-search-bar">
<span className="pub-search-icon">
<i className="fa-solid fa-magnifying-glass"></i>
</span>
<input
type="text"
placeholder="Search researchers, labs, projects, and disciplines..."
value={query}
onChange={(e) => setQuery(e.target.value)}
onKeyDown={(e) => e.key === 'Enter' && handleSearch()}
/>
<div className="pub-search-btn-wrap">
<button className="pub-btn-primary" onClick={handleSearch}>Search</button>
</div>
</div>
{/* Filter tabs */}
<div className="flex flex-wrap items-center gap-3 mt-5">
<span className="text-xs font-bold uppercase tracking-widest" style={{ color: 'var(--pub-muted)' }}>
Filter by:
</span>
{FILTERS.map((f) => (
<button
key={f}
onClick={() => setActiveFilter(f)}
className="pub-btn-outline"
style={activeFilter === f ? {
backgroundColor: 'var(--pub-blue-light)',
color: 'var(--pub-blue)',
borderColor: 'transparent',
} : {}}
>
{f}
</button>
))}
</div>
</div>
</section>
);
};
export default ResearchSearchHeader;

View File

@@ -0,0 +1,177 @@
'use client';
import React, { useState } from 'react';
const SORT_OPTIONS = ['Relevance', 'Newest First', 'Most Active', 'Alphabetical'];
const RESULTS = [
{
type: 'Project',
badgeClass: 'pub-badge-open',
badgeIcon: 'fa-flask',
badgeLabel: 'Active Project',
statusClass: 'pub-badge-peer',
statusLabel: 'Environmental Studies',
title: 'Urban Microclimate Modeling',
lead: 'Dr. Alan Turing',
updated: 'Updated 2 days ago',
center: 'Institute for Climate Research',
desc: 'Developing high-resolution predictive models for heat island effects in European metropolitan areas using machine learning and satellite data.',
tags: ['Climate', 'Machine Learning', 'Urban Studies'],
progress: 65,
},
{
type: 'Lab',
badgeClass: 'pub-badge-institutional',
badgeIcon: 'fa-building-user',
badgeLabel: 'Research Lab',
statusClass: 'pub-badge-peer',
statusLabel: 'Cognitive Science',
title: 'Cognitive Sciences Lab',
lead: 'Prof. Marie Curie',
updated: 'Updated 1 week ago',
center: 'Center for Digital Humanities',
desc: 'Exploring the intersection of artificial intelligence and human psychology, with a focus on decision-making processes and behavioral modeling.',
tags: ['AI', 'Psychology', 'Neuroscience'],
progress: null,
},
{
type: 'Project',
badgeClass: 'pub-badge-request',
badgeIcon: 'fa-gavel',
badgeLabel: 'Data Collection',
statusClass: 'pub-badge-peer',
statusLabel: 'Law & Policy',
title: 'Digital Rights in the EU Framework',
lead: 'Dr. Elena Rostova',
updated: 'Updated 1 week ago',
center: 'Institute for Advanced European Studies',
desc: 'A comparative analysis of member state implementation of digital privacy directives and their impact on civil liberties across the EU.',
tags: ['Digital Rights', 'EU Law', 'Privacy'],
progress: 30,
},
];
const ResearchSearchResults = () => {
const [isSortOpen, setIsSortOpen] = useState(false);
const [selectedSort, setSelectedSort] = useState('Relevance');
return (
<div className="pub-results">
{/* Toolbar */}
<div className="pub-results-toolbar">
<p className="pub-results-count">
Showing <strong>110</strong> of <strong>340</strong> results
</p>
<div className="pub-sort-wrap">
<label>Sort by:</label>
<div className="pub-sort-dropdown">
<button
className={`pub-sort-dropdown-btn ${isSortOpen ? 'open' : ''}`}
onClick={() => setIsSortOpen(!isSortOpen)}
>
<span>{selectedSort}</span>
<i className="fa-solid fa-chevron-down"></i>
</button>
{isSortOpen && (
<div className="pub-sort-dropdown-menu">
{SORT_OPTIONS.map((opt) => (
<div
key={opt}
className={`pub-sort-dropdown-option ${selectedSort === opt ? 'selected' : ''}`}
onClick={() => { setSelectedSort(opt); setIsSortOpen(false); }}
>
{opt}
</div>
))}
</div>
)}
</div>
</div>
</div>
{/* Result cards */}
<div className="pub-card-list">
{RESULTS.map((item, idx) => (
<div key={idx} className="pub-card">
<div className="pub-card-top">
<h3 className="pub-card-title">
<a href="#">{item.title}</a>
</h3>
<div className="pub-badges">
<span className={`pub-badge ${item.badgeClass}`}>
<i className={`fa-solid ${item.badgeIcon}`}></i> {item.badgeLabel}
</span>
<span className="pub-badge pub-badge-peer">{item.statusLabel}</span>
</div>
</div>
<div className="pub-card-meta">
<div className="pub-meta-item">
<i className="fa-solid fa-user"></i>
<strong>{item.lead}</strong>
</div>
<div className="pub-meta-item">
<i className="fa-regular fa-clock"></i> {item.updated}
</div>
<div className="pub-meta-item">
<i className="fa-solid fa-building-columns"></i> {item.center}
</div>
</div>
<p className="pub-card-abstract">{item.desc}</p>
<div className="pub-keywords">
<span className="pub-keywords-label">Tags:</span>
{item.tags.map((tag) => (
<span key={tag} className="pub-keyword-tag">{tag}</span>
))}
</div>
{item.progress !== null && (
<div style={{ marginBottom: '1rem' }}>
<div className="flex justify-between text-xs mb-1" style={{ color: 'var(--pub-muted)' }}>
<span>Progress</span>
<span style={{ fontWeight: 600, color: 'var(--pub-text)' }}>{item.progress}%</span>
</div>
<div style={{ width: '100%', height: '6px', backgroundColor: 'var(--pub-bg)', borderRadius: '9999px' }}>
<div style={{ width: `${item.progress}%`, height: '6px', backgroundColor: 'var(--pub-blue)', borderRadius: '9999px' }}></div>
</div>
</div>
)}
<div className="pub-card-actions">
<button className="pub-action-btn pub-action-btn-primary">
<i className="fa-solid fa-arrow-right"></i> View Details
</button>
<button className="pub-action-btn pub-action-btn-secondary">
<i className="fa-regular fa-bookmark"></i> Save
</button>
</div>
</div>
))}
</div>
{/* Pagination */}
<div className="pub-pagination">
<button className="pub-page-btn" disabled>
<i className="fa-solid fa-arrow-left"></i> Previous
</button>
<div className="pub-page-numbers">
<button className="pub-page-num active">1</button>
<button className="pub-page-num">2</button>
<button className="pub-page-num">3</button>
<span className="pub-page-ellipsis">...</span>
<button className="pub-page-num">34</button>
</div>
<button className="pub-page-btn">
Next <i className="fa-solid fa-arrow-right"></i>
</button>
</div>
</div>
);
};
export default ResearchSearchResults;

View File

@@ -0,0 +1,94 @@
'use client';
import React, { useState } from 'react';
const DOMAINS = ['Law & Policy (42)', 'Cognitive Science (28)', 'Environmental Studies (35)', 'History & Humanities (50)', 'Economics (19)'];
const STATUSES = ['Active', 'Data Collection', 'Review', 'Completed'];
const TYPES = ['Researchers', 'Labs', 'Projects', 'Institutes'];
const AccordionSection = ({
title,
open,
onToggle,
children,
}: {
title: string;
open: boolean;
onToggle: () => void;
children: React.ReactNode;
}) => (
<div className="pub-accordion-item">
<button
className={`pub-accordion-trigger ${open ? 'open' : ''}`}
onClick={onToggle}
>
{title}
<i className="fa-solid fa-chevron-down"></i>
</button>
<div className={`pub-accordion-body ${open ? 'open' : ''}`}>
{children}
</div>
</div>
);
const ResearchSearchSidebar = () => {
const [isDomainOpen, setIsDomainOpen] = useState(true);
const [isStatusOpen, setIsStatusOpen] = useState(true);
const [isTypeOpen, setIsTypeOpen] = useState(true);
return (
<aside className="pub-sidebar">
<div className="pub-sidebar-inner">
<div className="pub-sidebar-header">
<h2>
<i className="fa-solid fa-filter"></i> Filters
</h2>
<button className="pub-clear-btn">Clear All</button>
</div>
<div className="pub-accordion">
{/* Research Domain */}
<AccordionSection title="Research Domain" open={isDomainOpen} onToggle={() => setIsDomainOpen(!isDomainOpen)}>
<div className="pub-filter-list">
{DOMAINS.map((d, i) => (
<label key={d} className="pub-filter-label">
<input type="checkbox" className="pub-checkbox" defaultChecked={i === 0} />
<span>{d}</span>
</label>
))}
</div>
</AccordionSection>
{/* Project Status */}
<AccordionSection title="Project Status" open={isStatusOpen} onToggle={() => setIsStatusOpen(!isStatusOpen)}>
<div className="pub-filter-list">
{STATUSES.map((s) => (
<label key={s} className="pub-filter-label">
<input type="checkbox" className="pub-checkbox" />
<span>{s}</span>
</label>
))}
</div>
</AccordionSection>
{/* Type */}
<AccordionSection title="Type" open={isTypeOpen} onToggle={() => setIsTypeOpen(!isTypeOpen)}>
<div className="pub-filter-list">
{TYPES.map((t) => (
<label key={t} className="pub-filter-label">
<input type="checkbox" className="pub-checkbox" />
<span>{t}</span>
</label>
))}
</div>
</AccordionSection>
</div>
</div>
</aside>
);
};
export default ResearchSearchSidebar;

View File

@@ -1,89 +0,0 @@
{
"title": "Liên Hệ Với Chúng Tôi",
"subtitle": "Chúng tôi luôn sẵn sàng hỗ trợ bạn 24/7",
"contactInfo": {
"address": {
"label": "Địa chỉ",
"value": "123 Nguyễn Huệ, Quận 1, TP.HCM",
"icon": "📍"
},
"phone": {
"label": "Điện thoại",
"value": "+84 28 1234 5678",
"icon": "📞"
},
"email": {
"label": "Email",
"value": "info@visaservice.com",
"icon": "✉️"
},
"hours": {
"label": "Giờ làm việc",
"value": "Thứ 2 - Thứ 6: 8:00 - 18:00\nThứ 7: 8:00 - 12:00",
"icon": "🕒"
}
},
"offices": [
{
"name": "Văn Phòng TP.HCM",
"address": "123 Nguyễn Huệ, Quận 1, TP.HCM",
"phone": "+84 28 1234 5678",
"email": "hcm@visaservice.com"
},
{
"name": "Văn Phòng Hà Nội",
"address": "456 Hoàn Kiếm, Hà Nội",
"phone": "+84 24 1234 5678",
"email": "hanoi@visaservice.com"
},
{
"name": "Văn Phòng Đà Nẵng",
"address": "789 Hải Châu, Đà Nẵng",
"phone": "+84 236 1234 567",
"email": "danang@visaservice.com"
}
],
"formFields": [
{
"name": "fullName",
"label": "Họ và tên",
"type": "text",
"required": true,
"placeholder": "Nhập họ và tên của bạn"
},
{
"name": "email",
"label": "Email",
"type": "email",
"required": true,
"placeholder": "example@email.com"
},
{
"name": "phone",
"label": "Số điện thoại",
"type": "tel",
"required": true,
"placeholder": "+84 xxx xxx xxx"
},
{
"name": "service",
"label": "Dịch vụ quan tâm",
"type": "select",
"required": true,
"options": [
"Tư vấn visa",
"Chuẩn bị hồ sơ",
"Đặt vé máy bay",
"Tour trọn gói",
"Khác"
]
},
{
"name": "message",
"label": "Tin nhắn",
"type": "textarea",
"required": false,
"placeholder": "Mô tả chi tiết nhu cầu của bạn..."
}
]
}

View File

@@ -1,237 +1,13 @@
"use client"; import ContactHero from "../components/contact/ContactHero";
import DepartmentDirectory from "../components/contact/DepartmentDirectory";
import ContactSplit from "../components/contact/ContactSplit";
import { useState, useEffect, FormEvent } from "react"; export default function ContactUsPage() {
import { ContactData } from "./types";
import Breadcrumb from "../components/Breadcrumb";
export default function ContactPage() {
const [contactData, setContactData] = useState<ContactData | null>(null);
const [loading, setLoading] = useState(true);
const [formData, setFormData] = useState({
name: "",
email: "",
phone: "",
address: "",
date: "",
message: "",
});
const [isSubmitting, setIsSubmitting] = useState(false);
const [submitStatus, setSubmitStatus] = useState<{
type: "success" | "error" | null;
message: string;
}>({ type: null, message: "" });
const apiUrl = process.env.NEXT_PUBLIC_API_URL || "http://localhost:3001";
// Fetch contact data from CMS
useEffect(() => {
const fetchContactData = async () => {
try {
const response = await fetch(`${apiUrl}/api/contact`, { cache: 'no-store' });
if (response.ok) {
const data = await response.json();
setContactData(data);
}
} catch (error) {
console.error("Error fetching contact data:", error);
} finally {
setLoading(false);
}
};
fetchContactData();
}, [apiUrl]);
const handleChange = (
e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>
) => {
const { name, value } = e.target;
setFormData((prev) => ({ ...prev, [name]: value }));
};
const handleSubmit = async (e: FormEvent) => {
e.preventDefault();
setIsSubmitting(true);
setSubmitStatus({ type: null, message: "" });
try {
const response = await fetch(`${apiUrl}/api/contact/submit`, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(formData),
});
const data = await response.json();
if (response.ok && data.success) {
setSubmitStatus({
type: "success",
message: data.message || "Thank you! We will contact you soon.",
});
setFormData({
name: "",
email: "",
phone: "",
address: "",
date: "",
message: "",
});
} else {
setSubmitStatus({
type: "error",
message: data.error || "Something went wrong. Please try again.",
});
}
} catch (error) {
console.error("Submit error:", error);
setSubmitStatus({
type: "error",
message: "Network error. Please check your connection and try again.",
});
} finally {
setIsSubmitting(false);
}
};
if (loading) {
return ( return (
<div className="loading-wrapper" style={{ minHeight: "100vh", display: "flex", alignItems: "center", justifyContent: "center" }}> <main className="contact-page min-h-screen bg-gray-50 pb-20">
<p>Loading...</p> <ContactHero />
</div> <DepartmentDirectory />
); <ContactSplit />
} </main>
// Default values if API fails
const hero = contactData?.hero || { title: "Contact Us", backgroundImage: "/assets/img/inner-page/breadcrumb.jpg" };
const contactCards = contactData?.contactCards || [];
const map = contactData?.map || { embedUrl: "" };
const form = contactData?.form || {
heading: "Send Us Message",
description: "Have questions? Send us a message today.",
fields: [],
submitButton: { text: "SEND MESSAGE", icon: "fa-solid fa-arrow-right", buttonClass: "theme-btn style-2" }
};
return (
<>
{/* Breadcrumb-Wrapper Section Start */}
<Breadcrumb title={hero.title} current={hero.title} />
{/* Contact Icon Section Start */}
<section className="contact-us-section-3 section-padding fix">
<div className="container">
<div className="row g-4">
{contactCards.map((card, index) => (
<div className="col-xl-4 col-lg-6 col-md-6" key={index}>
<div className="contact-icon-item">
<div className="icon">
<i className={card.iconType}></i>
</div>
<div className="content">
<p>{card.title}</p>
<h6>
{card.content.map((line, i) => (
<span key={i}>
{card.type === "email" ? (
<a href={`mailto:${line}`}>{line}</a>
) : card.type === "phone" ? (
<a href={`tel:${line.replace(/\s/g, "")}`}>{line}</a>
) : (
line
)}
{i < card.content.length - 1 && <br />}
</span>
))}
</h6>
</div>
</div>
</div>
))}
</div>
</div>
</section>
{/* Contact Section Start */}
<section className="contact-section-3 section-padding fix pt-0">
<div className="container">
<div className="contact-from-wrapper">
<h5 className="text-center">{form.heading}</h5>
<p className="text-center mt-3 mb-5">&quot;{form.description}&quot;</p>
{/* Status Message */}
{submitStatus.type && (
<div
className={`alert ${submitStatus.type === "success" ? "alert-success" : "alert-danger"
} text-center mb-4`}
>
{submitStatus.message}
</div>
)}
<div className="row g-4">
<div className="col-xl-12">
<form onSubmit={handleSubmit} className="contact-form-items">
<div className="row g-4">
{form.fields.map((field, index) => (
<div className={field.colClass || "col-lg-12"} key={index}>
<div className="form-clt">
<span>{field.label}{field.required && " *"}</span>
{field.type === "textarea" ? (
<textarea
name={field.name}
value={formData[field.name as keyof typeof formData] || ""}
onChange={handleChange}
placeholder={field.placeholder}
required={field.required}
></textarea>
) : (
<input
type={field.type}
name={field.name}
value={formData[field.name as keyof typeof formData] || ""}
onChange={handleChange}
placeholder={field.placeholder}
required={field.required}
/>
)}
</div>
</div>
))}
<div className="col-lg-4">
<button
type="submit"
className={form.submitButton.buttonClass}
disabled={isSubmitting}
>
{isSubmitting ? "SENDING..." : form.submitButton.text}
<i className={form.submitButton.icon}></i>
</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</section>
{/* Map Section Start */}
{map.embedUrl && (
<div className="map-section section-padding pt-0">
<div className="map-items">
<div className="googpemap">
<iframe
src={map.embedUrl}
style={{ border: 0 }}
allowFullScreen
loading="lazy"
></iframe>
</div>
</div>
</div>
)}
</>
); );
} }

View File

@@ -1,44 +0,0 @@
export interface ContactCard {
type: string;
title: string;
content: string[];
iconType: string;
}
export interface ContactHero {
title: string;
backgroundImage: string;
}
export interface ContactMap {
embedUrl: string;
}
export interface ContactFormField {
name: string;
label: string;
type: string;
placeholder: string;
required: boolean;
colClass: string;
}
export interface ContactSubmitButton {
text: string;
icon: string;
buttonClass: string;
}
export interface ContactForm {
heading: string;
description: string;
fields: ContactFormField[];
submitButton: ContactSubmitButton;
}
export interface ContactData {
hero: ContactHero;
contactCards: ContactCard[];
map: ContactMap;
form: ContactForm;
}

View File

@@ -1,159 +0,0 @@
/* ============================================
Contact Page — Scoped Styles
Scope: .contact-page
============================================ */
@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:wght@700&display=swap');
/* Reset heading override từ main.css */
.contact-page h1,
.contact-page h2,
.contact-page h3,
.contact-page h4 {
font-size: unset;
font-weight: unset;
line-height: unset;
margin: 0;
padding: 0;
}
/* Typography */
.contact-page .contact-heading {
font-family: 'Playfair Display', serif;
font-size: clamp(2rem, 4vw, 3.5rem);
font-weight: 700;
line-height: 1.15;
}
.contact-page .contact-card-title {
font-family: 'Playfair Display', serif;
font-size: 1.1rem;
font-weight: 700;
line-height: 1.3;
}
.contact-page .contact-form-title {
font-family: 'Playfair Display', serif;
font-size: 1.75rem;
font-weight: 700;
line-height: 1.2;
}
.contact-page .contact-pin-title {
font-family: 'Playfair Display', serif;
font-size: 0.875rem;
font-weight: 700;
}
/* Color token: --primary */
.contact-page .text-primary,
.contact-page .hover\:text-primary:hover { color: rgb(38, 60, 111); }
.contact-page .bg-primary { background-color: rgb(38, 60, 111) !important; }
.contact-page .border-primary { border-color: rgb(38, 60, 111); }
.contact-page .focus\:border-primary:focus { border-color: rgb(38, 60, 111); }
.contact-page .focus\:ring-primary:focus { --tw-ring-color: rgb(38, 60, 111); }
/* group-hover bg-primary */
.contact-page .group:hover .group-hover\:bg-primary { background-color: rgb(38, 60, 111) !important; }
.contact-page .group:hover .group-hover\:text-white { color: #fff; }
/* Color token: --dark */
.contact-page .text-dark { color: #111827; }
/* bg-white/5, /10 */
.contact-page .bg-white\/5 { background-color: rgba(255,255,255,0.05); }
.contact-page .bg-white\/10 { background-color: rgba(255,255,255,0.10); }
/* border-white/20, /50 */
.contact-page .border-white\/20 { border-color: rgba(255,255,255,0.20); }
.contact-page .border-white\/50 { border-color: rgba(255,255,255,0.50); }
/* text-white/80, /90 */
.contact-page .text-white\/80 { color: rgba(255,255,255,0.80); }
.contact-page .text-white\/90 { color: rgba(255,255,255,0.90); }
/* bg-white/95 */
.contact-page .bg-white\/95 { background-color: rgba(255,255,255,0.95); }
/* border-t border-white/20 */
.contact-page .border-white\/20 { border-color: rgba(255,255,255,0.20); }
/* rounded fixes — main.css có thể reset border-radius */
.contact-page .rounded-\[16px\] { border-radius: 16px !important; }
.contact-page .rounded-\[24px\] { border-radius: 24px !important; }
.contact-page .rounded-\[12px\] { border-radius: 12px !important; }
.contact-page .rounded-full { border-radius: 9999px !important; }
.contact-page .rounded-\[12px\] { border-radius: 12px !important; }
/* button reset */
.contact-page button,
.contact-page input,
.contact-page select,
.contact-page textarea {
font-size: inherit;
}
/* Send Message button */
.contact-page .bg-primary.rounded-\[12px\] {
border-radius: 12px !important;
background-color: rgb(38, 60, 111) !important;
}
.contact-page .bg-primary.rounded-\[12px\]:hover {
background-color: rgba(38, 60, 111, 0.9) !important;
}
/* Icon color fix */
.contact-page .text-primary i,
.contact-page i.text-primary,
.contact-page .text-primary svg,
.contact-page svg.text-primary {
color: rgb(38, 60, 111) !important;
}
/* Icon box bg-blue-50 */
.contact-page .bg-blue-50 {
background-color: rgb(239, 246, 255) !important;
}
/* blue-100 border */
.contact-page .border-blue-100 {
border-color: rgb(219, 234, 254) !important;
}
/* info box bg-blue-50 text-primary */
.contact-page .bg-blue-50.rounded-\[12px\] {
background-color: rgb(239, 246, 255) !important;
}
/* Icon box hover — đổi icon sang trắng khi hover card */
.contact-page .group:hover .group-hover\:text-white i,
.contact-page .group:hover .group-hover\:text-white svg {
color: #ffffff !important;
}
/* Form inputs border-radius và placeholder */
.contact-page input,
.contact-page select,
.contact-page textarea {
border-radius: 12px !important;
}
.contact-page input::placeholder,
.contact-page textarea::placeholder {
color: #9ca3af !important;
}
/* contact-form-title size */
.contact-page .contact-form-title {
font-size: 2rem !important;
}
/* Consent checkbox alignment */
.contact-page .custom-checkbox {
margin-top: 2px !important;
flex-shrink: 0;
}

View File

@@ -1,14 +0,0 @@
import "./contact.css";
import ContactHero from "../components/contactus/ContactHero";
import DepartmentDirectory from "../components/contactus/DepartmentDirectory";
import ContactSplit from "../components/contactus/ContactSplit";
export default function ContactUsPage() {
return (
<main className="contact-page min-h-screen bg-gray-50 pb-20">
<ContactHero />
<DepartmentDirectory />
<ContactSplit />
</main>
);
}

View File

@@ -1,15 +1,18 @@
@import "tailwindcss"; @import "tailwindcss";
@import "./components/layout/Header/mobile-menu.css"; @import "./components/layout/Header/mobile-menu.css";
@import "./components/layout/Header/header-responsive.css"; @import "./components/layout/Header/header-responsive.css";
@import "./components/home/home.css";
@import "./components/about/about.css";
@theme { @theme {
--color-brand-blue: #1b254b; --color-brand-blue: #1b254b;
--color-brand-light: #f8fbff; --color-brand-light: #f8fbff;
--color-ui-muted: #6b7280; --color-ui-muted: #6b7280;
--color-ui-border: #e5e7eb; --color-ui-border: #e5e7eb;
--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
--shadow-hover: 0 10px 15px -3px rgba(0,0,0,0.08), 0 4px 6px -2px rgba(0,0,0,0.04);
--shadow-soft: 0 4px 6px -1px rgba(0,0,0,0.05), 0 2px 4px -1px rgba(0,0,0,0.03);
} }
@layer components { @layer components {
@@ -17,11 +20,3 @@
@apply border border-[--color-ui-border] bg-white; @apply border border-[--color-ui-border] bg-white;
} }
} }
.collapse {
visibility: visible !important;
}
.collapse.show {
visibility: visible;
}

View File

@@ -1,5 +1,4 @@
import type { Metadata } from "next"; import type { Metadata } from "next";
import "./globals.css";
import Header from "./components/layout/Header/Header"; import Header from "./components/layout/Header/Header";
import Footer from "./components/layout/Footer/Footer"; import Footer from "./components/layout/Footer/Footer";
@@ -9,9 +8,10 @@ import MouseCursor from "./components/MouseCursor";
import Script from "next/script"; import Script from "next/script";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "H.A.I Learning", title: "ULDP",
description: "H.A.I Learning", description: "ULDP",
}; };
import "./globals.css";
export default function RootLayout({ export default function RootLayout({
children, children,

20
app/publications/page.tsx Normal file
View File

@@ -0,0 +1,20 @@
import React from 'react';
import PublicationHeader from '@/app/components/publications/PublicationHeader';
import PublicationSidebar from '@/app/components/publications/PublicationSidebar';
import PublicationResults from '@/app/components/publications/PublicationResults';
export default function PublicationsPage() {
return (
<div className="pub-wrapper">
<PublicationHeader />
<section id="repo-content">
<div className="max-w-[1440px] mx-auto px-6 lg:px-8">
<div className="pub-layout">
<PublicationSidebar />
<PublicationResults />
</div>
</div>
</section>
</div>
);
}

24
app/research/page.tsx Normal file
View File

@@ -0,0 +1,24 @@
import React from 'react';
import { Metadata } from 'next';
import ResearchHero from '@/app/components/research/ResearchHero';
import ResearchSearch from '@/app/components/research/ResearchSearch';
import ResearchDomains from '@/app/components/research/ResearchDomains';
import ProjectsAndCenters from '@/app/components/research/ProjectsAndCenters';
import ResearchResources from '@/app/components/research/ResearchResources';
export const metadata: Metadata = {
title: 'Research Hub | Liberal University',
description: 'Explore our cutting-edge research domains, active projects, and funding calls.',
};
export default function ResearchPage() {
return (
<div className="research-wrapper">
<ResearchHero />
<ResearchSearch />
<ResearchDomains />
<ProjectsAndCenters />
<ResearchResources />
</div>
);
}

View File

@@ -0,0 +1,26 @@
import React from 'react';
import { Metadata } from 'next';
import ResearchSearchHeader from '@/app/components/research/search/ResearchSearchHeader';
import ResearchSearchSidebar from '@/app/components/research/search/ResearchSearchSidebar';
import ResearchSearchResults from '@/app/components/research/search/ResearchSearchResults';
export const metadata: Metadata = {
title: 'Search Research | Liberal University',
description: 'Search across researchers, labs, projects, and institutes.',
};
export default function ResearchSearchPage() {
return (
<div className="pub-wrapper">
<ResearchSearchHeader />
<section id="repo-content">
<div className="max-w-[1440px] mx-auto px-6 lg:px-8">
<div className="pub-layout">
<ResearchSearchSidebar />
<ResearchSearchResults />
</div>
</div>
</section>
</div>
);
}

View File

@@ -13,18 +13,19 @@
"dependencies": { "dependencies": {
"axios": "^1.13.4", "axios": "^1.13.4",
"next": "16.1.6", "next": "16.1.6",
"postcss": "^8.5.9",
"react": "19.2.3", "react": "19.2.3",
"react-dom": "19.2.3" "react-dom": "19.2.3"
}, },
"devDependencies": { "devDependencies": {
"@tailwindcss/postcss": "^4", "@tailwindcss/postcss": "^4.2.2",
"@types/node": "^20", "@types/node": "^20",
"@types/react": "^19", "@types/react": "^19",
"@types/react-dom": "^19", "@types/react-dom": "^19",
"eslint": "^9", "eslint": "^9",
"eslint-config-next": "16.1.6", "eslint-config-next": "16.1.6",
"sass": "^1.98.0", "sass": "^1.98.0",
"tailwindcss": "^4", "tailwindcss": "^4.2.2",
"typescript": "^5" "typescript": "^5"
} }
} }

File diff suppressed because it is too large Load Diff

View File

@@ -1,280 +0,0 @@
.about-wrapper {
.about-image {
max-width: 375px;
position: relative;
z-index: 9;
@include breakpoint (max-xxl) {
max-width: initial;
}
img {
@include imgw;
border-radius: 16px;
}
.about-image-2 {
position: absolute;
bottom: -170px;
right: -238px;
@include breakpoint (max-xxl) {
max-width: 250px;
right: 0;
bottom: 0;
}
}
.bg-shape {
position: absolute;
z-index: -1;
top: 0;
left: 0;
right: 0;
@include breakpoint (max-xxl) {
display: none;
}
img {
width: initial;
height: initial;
}
}
.plane-shape {
position: absolute;
left: -38px;
bottom: -163px;
z-index: -1;
@include breakpoint (max-xxl) {
display: none;
}
img {
width: initial;
height: initial;
}
}
.top-shape {
position: absolute;
right: -200px;
top: 0;
@include breakpoint (max-xxl) {
display: none;
}
img {
width: initial;
height: initial;
}
}
}
.about-content {
.text {
margin-top: 24px;
padding-left: 40px;
border-left: 3px solid $border-color-2;
margin-bottom: 30px;
@include breakpoint (max-xxl) {
border-left: none;
padding-left: 0;
}
}
.about-item {
@include flex;
justify-content: space-between;
border-top: 1px solid rgba(203, 204, 207, 0.24);
padding-top: 24px;
@include breakpoint (max-lg) {
flex-wrap: wrap;
gap: 30px;
}
.content {
span {
font-size: 20px;
font-weight: 500;
color: $header-color;
display: inline-block;
margin-bottom: 5px;
img {
margin-right: 8px;
}
}
}
}
.list {
border-bottom: 1px solid rgba(203, 204, 207, 0.24);
padding: 24px 0 32px;
margin-bottom: 48px;
@include breakpoint (max-xxl) {
margin-bottom: 30px;
padding: 24px 0 30px;
}
li {
&:not(:last-child) {
margin-bottom: 10px;
}
@include breakpoint (max-xxl) {
font-size: 14px;
}
i {
color: $theme-color-2;
margin-right: 8px;
}
}
}
}
}
.about-section {
position: relative;
z-index: 9;
.top-shape {
position: absolute;
right: 0;
top: -50px;
z-index: -1;
@include breakpoint (max-xxl) {
display: none;
}
}
}
.about-wrapper-3 {
.about-content {
.text {
margin-top: 20px;
max-width: 616px;
border-bottom: 1px solid rgba(203, 204, 207, 0.24);
padding-bottom: 24px;
margin-bottom: 30px;
}
.about-list-item {
display: flex;
gap: 32px;
@include breakpoint (max-xxl) {
flex-wrap: wrap;
gap: 25px;
}
.loading-box {
height: 256px;
width: 214px;
border-radius: 16px;
position: relative;
text-align: center;
.loading-boxs {
height: 200px;
width: 200px;
display: flex;
align-items: center;
justify-content: center;
background: #0a4ebd;
border-radius: 16px;
.circle-bar {
position: relative;
strong {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
font-size: 28px;
font-weight: bold;
color: $white;
}
}
}
h6 {
color: $white;
font-weight: 500;
font-size: 14px;
}
}
.list-item {
.list {
margin-bottom: 48px;
li {
font-size: 18px;
font-weight: 500;
color: $header-color;
font-family: $heading-font;
@include breakpoint (max-xxl) {
font-size: 16px;
}
&:not(:last-child) {
margin-bottom: 15px;
}
i {
margin-right: 8px;
color: $theme-color-2;
}
}
}
}
}
}
.about-image {
img {
@include imgw;
border-radius: 8px;
}
&.tp-clip-anim {
width: 100%;
display: grid;
align-items: center;
justify-items: center;
overflow: hidden;
position: relative;
& .tp-anim-img {
opacity: 0;
width: 100%;
height: 100%;
}
& .mask {
background-size: cover;
background-position: center;
transform: scale(1.005);
}
>* {
grid-area: 1 / 1 / 2 / 2;
width: 100%;
height: 100%;
max-height: 100%;
}
}
}
}

View File

@@ -1,915 +0,0 @@
//>>>>> Video Animation Start <<<<<//
@-webkit-keyframes rippleOne {
70% {
-webkit-box-shadow: 0 0 0 40px rgba(244, 68, 56, 0);
box-shadow: 0 0 0 40px rgba(244, 68, 56, 0);
}
100% {
-webkit-box-shadow: 0 0 0 0 rgba(244, 68, 56, 0);
box-shadow: 0 0 0 0 rgba(244, 68, 56, 0);
}
}
@keyframes rippleOne {
70% {
-webkit-box-shadow: 0 0 0 40px rgba(244, 68, 56, 0);
box-shadow: 0 0 0 40px rgba(244, 68, 56, 0);
}
100% {
-webkit-box-shadow: 0 0 0 0 rgba(244, 68, 56, 0);
box-shadow: 0 0 0 0 rgba(244, 68, 56, 0);
}
}
//>>>>> Video Animation End <<<<<//
//>>>>> Circle Animation Start <<<<<//
@keyframes cir36 {
100%{
transform: rotate(360deg);
}
}
@keyframes rounded {
50%{
transform: rotate(15deg);
}
}
//>>>>> Circle Animation End <<<<<//
@keyframes up-down {
0% {
transform: translateY(10px);
}
100% {
transform: translateY(-10px);
}
}
//>>>>> Preloader Animation Start <<<<<//
@-webkit-keyframes spinner {
to {
-webkit-transform: rotateZ(360deg);
transform: rotateZ(360deg);
}
}
@keyframes spinner {
to {
-webkit-transform: rotateZ(360deg);
transform: rotateZ(360deg);
}
}
@-webkit-keyframes letters-loading {
0%,
75%,
100% {
opacity: 0;
transform: rotateY(-90deg);
}
25%,
50% {
opacity: 1;
transform: rotateY(0deg);
}
}
@keyframes letters-loading {
0%,
75%,
100% {
opacity: 0;
transform: rotateY(-90deg);
}
25%,
50% {
opacity: 1;
transform: rotateY(0deg);
}
}
//>>>>> Preloader Animation Start <<<<<//
@keyframes loaderspin {
0% {
transform: translate(-50%, -50%) rotate(0deg);
}
100% {
transform: translate(-50%, -50%) rotate(360deg);
}
}
@keyframes tpswing{
0% {
-webkit-transform: rotate(20deg);
-ms-transform:rotate(20deg);
transform: rotate(20deg);
}
100% {
-webkit-transform: rotate(0deg);
-ms-transform:rotate(0deg);
transform: rotate(0deg);
}
}
@keyframes width {
0% {
width: 0%;
}
100% {
width: 100%;
}
}
@-webkit-keyframes width {
0% {
width: 0%;
}
100% {
width: 100%;
}
}
@-webkit-keyframes loaderspin {
0% {
transform: translate(-50%, -50%) rotate(0deg);
}
100% {
transform: translate(-50%, -50%) rotate(360deg);
}
}
@keyframes loaderpulse {
0% {
transform: scale(1);
}
100% {
transform: scale(1.2);
}
}
//>>>>> Preloader Animation End <<<<<//
//animation
@keyframes rounded {
50%{
transform: rotate(20deg);
}
}
@keyframes cir36 {
100% {
transform: rotate(360deg);
}
}
.float-bob-y {
-webkit-animation-name: float-bob-y;
animation-name: float-bob-y;
-webkit-animation-duration: 3s;
animation-duration: 3s;
-webkit-animation-iteration-count: infinite;
animation-iteration-count: infinite;
-webkit-animation-timing-function: linear;
animation-timing-function: linear;
}
@-webkit-keyframes float-bob-y {
0% {
-webkit-transform: translateY(-30px);
transform: translateY(-30px);
}
50% {
-webkit-transform: translateY(-10px);
transform: translateY(-10px);
}
100% {
-webkit-transform: translateY(-30px);
transform: translateY(-30px);
}
}
@keyframes float-bob-y {
0% {
-webkit-transform: translateY(-30px);
transform: translateY(-30px);
}
50% {
-webkit-transform: translateY(-10px);
transform: translateY(-10px);
}
100% {
-webkit-transform: translateY(-30px);
transform: translateY(-30px);
}
}
.float-bob-x {
-webkit-animation-name: float-bob-x;
animation-name: float-bob-x;
-webkit-animation-duration: 3s;
animation-duration: 3s;
-webkit-animation-iteration-count: infinite;
animation-iteration-count: infinite;
-webkit-animation-timing-function: linear;
animation-timing-function: linear;
}
@-webkit-keyframes float-bob-x {
0% {
-webkit-transform: translateX(-0px);
transform: translateX(30px);
}
50% {
-webkit-transform: translateX(10px);
transform: translateX(10px);
}
100% {
-webkit-transform: translateX(30px);
transform: translateX(30px);
}
}
@keyframes float-bob-x {
0% {
-webkit-transform: translateX(30px);
transform: translateX(30px);
}
50% {
-webkit-transform: translateX(10px);
transform: translateX(10px);
}
100% {
-webkit-transform: translateX(30px);
transform: translateX(30px);
}
}
@keyframes bounce-x {
0% {
-webkit-transform: translateX(0);
transform: translateX(0);
}
50% {
-webkit-transform: translateX(30px);
transform: translateX(30px);
}
100% {
-webkit-transform: translateX(0);
transform: translateX(0);
}
}
.bounce-x {
-webkit-animation: bounce-x 7s infinite linear;
animation: bounce-x 7s infinite linear;
}
@keyframes criss-cross-left {
0% {
left: -20px;
}
50% {
left: 50%;
width: 20px;
height: 20px;
}
100% {
left: 50%;
width: 375px;
height: 375px;
}
}
@keyframes criss-cross-right {
0% {
right: -20px;
}
50% {
right: 50%;
width: 20px;
height: 20px;
}
100% {
right: 50%;
width: 375px;
height: 375px;
}
}
@keyframes rotated2 {
0% {
transform: rotate(0);
}
100% {
transform: rotate(-360deg);
}
}
@keyframes wave {
0% {transform: translateX(0);}
50% {transform: translateX(-25%);}
100% {transform: translateX(-50%);}
}
@keyframes zoom {
0%{
transform:scale(.5);
}
50%{
transform: scale(1);
}
100%{
transform: scale( .5);
}
}
@keyframes translateY2 {
0% {
-webkit-transform: translateY(-30px);
-moz-transform: translateY(-30px);
-ms-transform: translateY(-30px);
-o-transform: translateY(-30px);
transform: translateY(-30px);
}
100% {
-webkit-transform: translateY(20px);
-moz-transform: translateY(20px);
-ms-transform: translateY(20px);
-o-transform: translateY(20px);
transform: translateY(20px);
}
}
@keyframes translateX2{
0% {
-webkit-transform: translateX(-30px);
-moz-transform: translateX(-30px);
-ms-transform: translateX(-30px);
-o-transform: translateX(-30px);
transform: translateX(-30px);
}
100% {
-webkit-transform: translatXY(20px);
-moz-transform: translateX(20px);
-ms-transform: translateX(20px);
-o-transform: translateX(20px);
transform: translateX(20px);
}
}
@keyframes moving {
0% {
transform: translatey(0px);
}
20%{
transform: translateX(-50px);
}
50% {
transform: translatey(-40px);
}
100% {
transform: translatey(0px);
}
}
/*img-animation**********************/
.img-custom-anim-right {
animation: img-anim-right 1.3s forwards cubic-bezier(0.645, 0.045, 0.355, 1) 0.4s;
opacity: 0;
}
@keyframes img-anim-right {
0% {
transform: translateX(5%);
clip-path: inset(0 0 0 100%);
opacity: 0;
}
100% {
transform: translateX(0);
clip-path: inset(0 0 0 0);
opacity: 1;
}
}
.img-custom-anim-left {
animation: img-anim-left 1.3s forwards cubic-bezier(0.645, 0.045, 0.355, 1) 0.4s;
opacity: 0;
}
@keyframes img-anim-left {
0% {
transform: translateX(-5%);
clip-path: inset(0 100% 0 0);
opacity: 0;
}
100% {
transform: translateX(0);
clip-path: inset(0 0 0 0);
opacity: 1;
}
}
.img-custom-anim-top {
animation: img-anim-top 1.3s forwards cubic-bezier(0.645, 0.045, 0.355, 1);
opacity: 0;
}
@keyframes img-anim-top {
0% {
transform: translateY(-5%);
clip-path: inset(0 0 100% 0);
opacity: 0;
}
100% {
transform: translateY(0);
clip-path: inset(0 0 0 0);
opacity: 1;
}
}
@keyframes slideInLeft {
to {
opacity: 1;
transform: translateX(0);
}
}
@keyframes slideInRight {
to {
opacity: 1;
transform: translateX(0);
}
}
@keyframes shine {
0% {
left: -100%;
}
50% {
left: 100%;
}
100% {
left: 100%;
}
}
.animation-infinite {
animation: ShapeAnim 80s linear infinite;
height: 30px;
width: 100%;
background-repeat: repeat;
overflow: hidden;
}
.img-custom-anim-bottom {
animation: img-anim-bottom 1.3s forwards cubic-bezier(0.645, 0.045, 0.355, 1);
opacity: 0;
}
@keyframes img-anim-bottom {
0% {
transform: translateY(5%);
clip-path: inset(100% 0 0 0);
opacity: 0;
}
100% {
transform: translateY(0);
clip-path: inset(0 0 0 0);
opacity: 1;
}
}
@keyframes sparkle {
0% { opacity: 0; transform: scale(0.5); }
50% { opacity: 1; transform: scale(1.5); }
100% { opacity: 0; transform: scale(0.5); }
}
@keyframes borderAnim {
0% {
width: 0;
}
100% {
width: 44px;
}
}
@keyframes slideInLeft {
to {
opacity: 1;
transform: translateX(0);
}
}
@keyframes slideInRight {
to {
opacity: 1;
transform: translateX(0);
}
}
@keyframes shine {
0% {
left: -100%;
}
50% {
left: 100%;
}
100% {
left: 100%;
}
}
@keyframes strokeColorChange1 {
0% {
-webkit-text-stroke-color: rgba(202, 210, 210, 0.10);
}
25% {
-webkit-text-stroke-color: rgba(202, 210, 210, 0.10);
}
50% {
-webkit-text-stroke-color: rgba(194, 223, 147, 0.10);
}
75% {
-webkit-text-stroke-color: rgba(227, 87, 43, 0.10);
}
100% {
-webkit-text-stroke-color: rgba(194, 223, 147, 0.10);
}
}
@keyframes shake {
0%, 100% {
-webkit-transform: translateX(0);
-ms-transform: translateX(0);
transform: translateX(0);
}
10%, 30%, 50%, 70%, 90% {
-webkit-transform: translateX(-5px);
-ms-transform: translateX(-5px);
transform: translateX(-5px);
}
20%, 40%, 60%, 80% {
-webkit-transform: translateX(5px);
-ms-transform: translateX(5px);
transform: translateX(5px);
}
}
@keyframes rotateBorder {
0% {
transform: translate(-50%, -50%) rotate(0deg);
}
100% {
transform: translate(-50%, -50%) rotate(360deg);
}
}
// This is for Progress bar animation also has a js code
@keyframes animate-positive {
0% {
width: 0;
}
}
@keyframes scroll {
0% {
transform: translateX(0);
}
100% {
transform: translateX(-100%);
}
}
@keyframes scrolly {
0% {
transform: translateY(0);
}
100% {
transform: translateY(-60%);
}
}
@keyframes scrolls {
0% {
transform: translateX(0);
}
100% {
transform: translateX(100%);
}
}
@keyframes scroll-left-to-right-loop {
0% {
transform: translateX(-50%);
}
100% {
transform: translateX(0%);
}
}
@-webkit-keyframes zoomOut {
from {
opacity: 1;
}
50% {
opacity: 0;
-webkit-transform: scale3d(.3, .3, .3);
transform: scale3d(.3, .3, .3);
}
to {
opacity: 0;
}
}
@keyframes zoomOut {
from {
opacity: 1;
}
50% {
opacity: 0;
-webkit-transform: scale3d(.3, .3, .3);
transform: scale3d(.3, .3, .3);
}
to {
opacity: 0;
}
}
.zoomOut {
-webkit-animation-name: zoomOut;
animation-name: zoomOut;
}
.img_left_animation {
animation: left-animation 2000ms forwards cubic-bezier(0.40, 0.98, 0.52, 0.99);
opacity: 0
}
@keyframes left-animation {
0% {
clip-path: inset(0 100% 0 0);
opacity: 0
}
100% {
clip-path: inset(0 0 0 0);
opacity: 1
}
}
.img_right_animation {
animation: right-animation 2000ms forwards cubic-bezier(0.40, 0.98, 0.52, 0.99);
opacity: 0
}
@keyframes right-animation {
0% {
clip-path: inset(0 0 0 100%);
opacity: 0
}
100% {
clip-path: inset(0 0 0 0);
opacity: 1
}
}
.img_top_animation {
animation: top-animation 2000ms forwards cubic-bezier(0.40, 0.98, 0.52, 0.99);
opacity: 0
}
@keyframes top-animation {
0% {
clip-path: inset(0 0 100% 0);
opacity: 0
}
100% {
clip-path: inset(0 0 0 0);
opacity: 1
}
}
.img_bottom_animation {
animation: bottom-animation 2000ms forwards cubic-bezier(0.40, 0.98, 0.52, 0.99);
opacity: 0
}
@keyframes bottom-animation {
0% {
clip-path: inset(100% 0 0 0);
opacity: 0
}
100% {
clip-path: inset(0 0 0 0);
opacity: 1
}
}
@keyframes circle {
0% {
transform: scale(0);
opacity: 0.6;
}
100% {
transform: scale(30);
opacity: 0;
}
}
@keyframes icon-bounce {
0%, 100%, 20%, 50%, 80% {
-webkit-transform: translateY(0);
transform: translateY(0);
}
40% {
-webkit-transform: translateY(-10px);
transform: translateY(-10px);
}
60% {
-webkit-transform: translateY(-5px);
transform: translateY(-5px);
}
}
@-webkit-keyframes slideInLeft {
0% {
-webkit-transform: translate3d(-100%, 0, 0);
transform: translate3d(-100%, 0, 0);
visibility: visible;
}
100% {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
}
@keyframes slideInLeft {
0% {
-webkit-transform: translate3d(-100%, 0, 0);
transform: translate3d(-100%, 0, 0);
visibility: visible;
}
100% {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
}
.slideInLeft {
-webkit-animation-name: slideInLeft;
animation-name: slideInLeft;
}
@-webkit-keyframes slideInRight {
0% {
-webkit-transform: translate3d(100%, 0, 0);
transform: translate3d(100%, 0, 0);
visibility: visible;
}
100% {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
}
@keyframes slideInRight {
0% {
-webkit-transform: translate3d(100%, 0, 0);
transform: translate3d(100%, 0, 0);
visibility: visible;
}
100% {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
}
.slideInRight {
-webkit-animation-name: slideInRight;
animation-name: slideInRight;
}
@-webkit-keyframes slideInUp {
0% {
-webkit-transform: translate3d(0, 100%, 0);
transform: translate3d(0, 100%, 0);
visibility: visible;
}
100% {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
}
@keyframes slideInUp {
0% {
-webkit-transform: translate3d(0, 100%, 0);
transform: translate3d(0, 100%, 0);
visibility: visible;
}
100% {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
}
.slideInUp {
-webkit-animation-name: slideInUp;
animation-name: slideInUp;
}
@-webkit-keyframes slideInDown {
0% {
-webkit-transform: translate3d(0, -100%, 0);
transform: translate3d(0, -100%, 0);
visibility: visible;
}
100% {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
}
@keyframes slideInDown {
0% {
-webkit-transform: translate3d(0, -100%, 0);
transform: translate3d(0, -100%, 0);
visibility: visible;
}
100% {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
}
.slideInDown {
-webkit-animation-name: slideInDown;
animation-name: slideInDown;
}
.zoom_in {
transform: scale(0.5);
}
.fade_up,
.fade_down,
.zoom_in,
.zoom_out {
opacity: 0;
transition: all 2s;
}
.show {
opacity: 1;
transform: translateY(0) scale(1);
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
@keyframes zoomIn {
0% {
opacity: 0;
-webkit-transform: scale3d(.8, .8, .8);
transform: scale3d(.8, .8, .8);
}
50% {
opacity: 1;
}
}

View File

@@ -1,70 +0,0 @@
.brand-wrapper {
.brand-item {
border-top: 1px solid rgba(203, 204, 207, 0.72);
border-bottom: 1px solid rgba(203, 204, 207, 0.72);
text-align: center;
height: 116px;
position: relative;
&::before {
@include before;
background-color: rgba(203, 204, 207, 0.72);
width: 1px;
left: 0;
}
&::after {
position: absolute;
content: "";
top: 0;
bottom: 0;
background-color: rgba(203, 204, 207, 0.72);
width: 1px;
right: 0;
}
.brand-image {
position: relative;
padding: 30px 0;
&::before {
@include before;
background-color: rgba(203, 204, 207, 0.72);
width: 1px;
left: 0;
height: 100px;
@include breakpoint (max-xl) {
display: none;
}
}
}
}
&.style-1 {
.brand-item {
height: 102px;
.brand-image {
text-align: center;
filter: grayscale(100%);
@include transition;
opacity: .4;
&:hover {
filter: initial;
opacity: 1;
}
}
.swiper-slide.swiper-slide-active{
.brand-image {
filter: initial;
opacity: 1;
}
}
}
}
}

View File

@@ -1,58 +0,0 @@
.theme-btn {
background: transparent;
color: $header-color;
display: inline-block;
font-size: 16px;
font-weight: 500;
padding: 6px 6px 6px 24px;
border-radius: 55px;
line-height: 1;
text-transform: uppercase;
-webkit-transition: all 0.3s ease-in-out;
transition: all 0.3s ease-in-out;
position: relative;
z-index: 1;
font-family: "Space Grotesk", sans-serif;
border: 1px solid $border-color;
@include breakpoint (max-sm) {
padding: 2px 4px 2px 24px;
}
i {
width: 48px;
height: 48px;
line-height: 48px;
text-align: center;
background-color: $theme-color;
color: $white;
margin-left: 20px;
@include transition;
border-radius: 50%;
}
&:hover {
background-color: $theme-color;
color: $white;
i {
background-color: $white;
color: $header-color;
}
}
}
.link-btn {
color: $theme-color-2;
// text-transform: capitalize;
font-weight: 500;
font-family: "Space Grotesk", sans-serif;
i {
margin-left: 8px;
}
&:hover {
color: $theme-color;
}
}

View File

@@ -1,362 +0,0 @@
.contact-wrapper-2 {
@include flex;
gap: 325px;
@include breakpoint (max-xxl) {
flex-wrap: wrap;
gap: 30px;
}
.contact-from-box {
padding: 60px 48px;
background-color: $theme-color-2;
border-radius: 24px;
width: 644px;
@include breakpoint (max-xxl) {
padding: 30px;
}
h3 {
color: $white;
font-size: 32px;
text-transform: uppercase;
margin-bottom: 30px;
text-align: center;
@include breakpoint (max-xxl) {
font-size: 25px;
margin-bottom: 20px;
}
@include breakpoint (max-sm) {
font-size: 20px;
}
}
.form-clt {
input,textarea {
width: 100%;
outline: none;
border: none;
background: transparent;
padding: 16px 0;
font-weight: 400;
font-size: 16px;
color: rgba(255, 255, 255, 0.7);
line-height: 1;
border-bottom: 1px solid rgba(203, 204, 207, 0.24);
&::placeholder {
color: rgba(255, 255, 255, 0.7);
}
}
.nice-select {
width: 100% !important;
padding: 0;
padding-bottom: 10px;
padding-top: 20px;
font-size: 16px;
// text-transform: capitalize;
border-radius: 0;
background-color: transparent;
border: none;
box-shadow: none;
font-size: 16px;
color: rgba(255, 255, 255, 0.7);
font-weight: 400;
width: initial;
border-bottom: 1px solid rgba(203, 204, 207, 0.24);
&::after {
right: 0;
width: 10px;
height: 8px;
border-bottom: 2px solid transparent;
border-right: 2px solid transparent;
margin-top: 0;
background-color: rgba(255, 255, 255, 0.7);
clip-path: polygon(100% 0, 49% 100%, 0 0);
-webkit-transform: rotate(0eg);
transform: rotate(0deg);
top: 36%;
}
.list {
width: 100%;
background-color: $bg-color;
top: 60%;
font-size: 16px;
color: $header-color;
}
.focus {
background-color: transparent;
font-weight: 400;
color: $text-color;
}
.option {
border: none;
&:hover {
background-color: transparent;
}
}
}
}
.contact-btn {
margin-top: 48px;
text-align: center;
margin-bottom: 48px;
@include breakpoint (max-xxl) {
margin-top: 30px;
margin-bottom: 30px;
}
.theme-btn {
color: $white;
&:hover {
border: 1px solid $theme-color;
}
}
}
h5 {
font-weight: 500;
color: $white;
margin-bottom: 10px;
}
h2 {
font-size: 40px;
border-bottom: 1px solid rgba(203, 204, 207, 0.24);
padding-bottom: 10px;
margin-bottom: 5px;
@include breakpoint (max-xxl) {
font-size: 25px;
}
@include breakpoint (max-sm) {
font-size: 20px;
}
a {
color: $white;
}
}
p {
color: rgba(255, 255, 255, 0.7);
}
}
.video-btn {
width: 88px;
height: 88px;
line-height: 88px;
text-align: center;
background-color: $theme-color;
color: $white;
position: relative;
font-size: 16px;
border-radius: 100px;
z-index: 999;
display: inline-block;
@include breakpoint (max-lg) {
margin-left: 30px;
}
@include breakpoint (max-sm) {
width: 70px;
height: 70px;
line-height: 70px;
margin-left: 15px;
}
&::before {
@include before;
width: 120px;
height: 120px;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
background: rgba(225, 56, 51, 0.24);
border-radius: 100%;
border: 2px solid $white;
@include breakpoint (max-sm) {
width: 100px;
height: 100px;
}
}
}
}
.contact-section-2 {
background-attachment: fixed;
}
.contact-from-wrapper {
background-color: $bg-color;
border-radius: 16px;
padding: 48px;
@include breakpoint (max-xxl) {
padding: 30px;
}
.form-clt {
position: relative;
span {
color: $header-color;
font-size: 18px;
font-weight: 500;
font-family: $heading-font;
margin-bottom: 10px;
display: inline-block;
}
input,textarea {
width: 100%;
border: none;
outline: none;
background: $white;
color: $text-color;
border-radius: 100px;
padding: 18px 20px;
@include breakpoint (max-md){
padding: 14px 20px;
}
@include breakpoint (max-sm){
padding: 12px 18px;
}
&::placeholder {
color: $text-color;
}
}
textarea {
padding-bottom: 100px;
resize: none;
border-radius: 40px;
}
}
.cheak-list-item {
margin-top: 30px;
margin-bottom: 48px;
@include breakpoint (max-xxl) {
margin-bottom: 30px;
}
.cheak-list {
@include flex;
gap: 80px;
margin-bottom: 24px;
@include breakpoint (max-xxl) {
flex-wrap: wrap;
gap: 22px;
}
.form-check {
flex-basis: 200px;
}
.form-check-label {
font-size: 18px;
color: $header-color;
font-weight: 500;
font-family: $heading-font;
}
.form-check .form-check-input {
float: left;
transform: translateY(0px);
border-radius: 100px;
border: 1px solid $text-color;
background-color: $white;
}
.form-check .form-check-input:checked {
background-color: $theme-color-2;
border: 1px solid $theme-color-2;
}
}
}
.theme-btn {
width: 100%;
&.style-2 {
width: initial;
}
}
}
.contact-icon-item {
@include flex;
gap: 24px;
background-color: $bg-color;
border-radius: 16px;
padding: 30px;
@include breakpoint (max-lg) {
flex-wrap: wrap;
}
.icon {
width: 64px;
height: 64px;
line-height: 64px;
text-align: center;
border-radius: 100px;
background-color: $header-color;
color: $white;
@include transition;
font-size: 20px;
}
.content {
p {
margin-bottom: 5px;
}
h6 {
font-size: 18px;
font-weight: 500;
line-height: 144%;
}
}
&:hover {
.icon {
background-color: $theme-color;
}
}
}
.map-items {
.googpemap {
iframe {
width: 100%;
height: 724px;
@include breakpoint (max-sm){
height: 400px;
}
}
}
}

View File

@@ -1,93 +0,0 @@
.faq-wrapper {
.faq-content {
.text {
max-width: 505px;
margin-top: 24px;
margin-bottom: 48px;
}
}
.faq-items {
position: relative;
z-index: 9;
.accordion {
.accordion-item {
border: none;
h5 {
button {
line-height: 1;
font-weight: 600;
padding: 29px 30px;
color: $header-color;
cursor: pointer;
@include breakpoint(max-sm) {
font-size: 18px;
line-height: 1.6;
padding: 22px 20px;
}
}
}
.accordion-body {
padding: 20px 30px;
background-color: $white;
box-shadow: 8px 8px 32px 0 rgba(0, 72, 180, 0.08);
backdrop-filter: blur(5px);
p {
font-size: 16px;
line-height: 24px;
font-weight: 400;
@include breakpoint(max-sm) {
width: 100%;
font-size: 14px;
line-height: 28px;
}
}
}
}
.accordion-button {
background-color: $white;
color: $header-color;
box-shadow: 8px 8px 32px 0 rgba(36, 12, 135, 0.08);
backdrop-filter: blur(5px);
&::after {
content: "\f324";
font-family: "Font Awesome 6 Pro";
background: transparent;
font-weight: 900;
transition: all 0.3s ease-in-out !important;
color: $theme-color-2;
}
&:not(.collapsed) {
background-color: $white;
box-shadow: 8px 8px 32px 0 rgba(36, 12, 135, 0.08);
backdrop-filter: blur(5px);
color: $header-color;
&::after {
content: "\f322";
font-family: "Font Awesome 6 Pro";
background: transparent;
font-weight: 900;
color: $theme-color;
transform: rotate(0);
}
}
}
}
}
}
.faq-section {
border-top: 1px solid rgba(203, 204, 207, 0.24);
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,683 +0,0 @@
.footer-wrapper {
.footer-item {
padding: 100px 0;
position: relative;
text-align: center;
@include breakpoint (max-lg) {
padding: 80px 0;
}
h2 {
font-size: 30px;
color: $white;
@include breakpoint (max-sm) {
font-size: 25px;
}
a {
color: $white;
}
&.text {
font-size: 24px;
}
}
.footer-list-item {
@include flex;
justify-content: space-between;
border-radius: 136px;
background: rgba(255, 255, 255, 0.08);
backdrop-filter: blur(62px);
padding: 20px 24px;
margin-top: 80px;
@include breakpoint (max-xxl) {
margin-top: 30px;
padding: 20px;
}
@include breakpoint (max-lg) {
border-radius: 0;
flex-wrap: wrap;
gap: 20px;
}
.footer-list {
@include flex;
gap: 40px;
@include breakpoint (max-xxl) {
gap: 20px;
}
@include breakpoint (max-sm) {
flex-wrap: wrap;
gap: 15px;
}
li {
font-weight: 500;
font-family: $heading-font;
text-transform: uppercase;
a {
color: $white;
&:hover {
color: $theme-color;
}
}
}
}
.social-icon {
@include flex;
gap: 12px;
a {
width: 40px;
height: 40px;
line-height: 40px;
text-align: center;
border-radius: 100px;
backdrop-filter: blur(46px);
background-color: $bg-color-2;
color: $white;
display: inline-block;
&:hover {
background-color: $theme-color;
}
}
}
}
}
}
.footer-section {
margin: 0 30px;
border-radius: 32px;
@include breakpoint (max-sm) {
margin: 0 15px;
}
}
.footer-bottom {
padding: 24px 0;
text-align: center;
.footer-wrapper {
@include flex;
justify-content: center;
gap: 100px;
@include breakpoint (max-xxl) {
flex-wrap: wrap;
gap: 20px;
}
@include breakpoint (max-sm) {
justify-content: start;
}
p {
color: $header-color;
span {
color: $theme-color;
text-transform: uppercase;
}
}
.bottom-list {
@include flex;
gap: 40px;
@include breakpoint (max-xxl) {
flex-wrap: wrap;
gap: 20px;
}
@include breakpoint (max-sm) {
justify-content: center;
}
li {
a {
&:hover {
color: $theme-color;
}
}
}
}
}
}
.footer-widget-wrapper-2 {
padding: 70px 0 90px;
@include breakpoint (max-lg) {
padding: 50px 0 80px;
}
.single-footer-widget {
margin-top: 30px;
.widget-title {
margin-bottom: 24px;
h3 {
color: $white;
text-transform: uppercase;
}
}
.footer-content {
p {
max-width: 502px;
color: rgba(255, 255, 255, 0.7);
@include breakpoint (max-xxl) {
font-size: 14px;
}
@include breakpoint (max-lg) {
font-size: 16px;
}
}
.social-icon {
@include flex;
gap: 20px;
margin-top: 50px;
@include breakpoint (max-xxl) {
margin-top: 30px;
gap: 13px;
}
@include breakpoint (max-lg) {
gap: 16px;
}
span {
display: inline-block;
margin-right: 4px;
color: $white;
font-weight: 500;
text-transform: uppercase;
font-family: $heading-font;
@include breakpoint (max-xxl) {
font-size: 14px;
}
@include breakpoint (max-lg) {
font-size: 16px;
}
}
a {
font-size: 20px;
color: $theme-color;
&:hover {
color: $theme-color-2;
}
}
}
}
.list {
li {
@include transition;
font-weight: 400;
&:not(:last-child){
margin-bottom: 20px;
}
a {
color: rgba(255, 255, 255, 0.7);
}
&:hover {
margin-left: 5px;
a {
color: $theme-color;
}
}
}
}
.contact-item {
li {
display: flex;
align-items: start;
color: rgba(255, 255, 255, 0.7);
gap: 8px;
&.style-2 {
@include flex;
}
&:not(:last-child) {
margin-bottom: 20px;
}
a {
color: rgba(255, 255, 255, 0.7);
}
i {
color: $theme-color;
}
}
}
}
}
.footer-section-2 {
position: relative;
z-index: 9;
.shape {
position: absolute;
left: 0;
top: 0;
z-index: -1;
}
}
.footer-newsletter {
@include flex;
justify-content: space-between;
margin-top: 100px;
padding: 32px 48px;
background-color: $theme-color-2;
border-radius: 16px;
@include breakpoint (max-xxl) {
flex-wrap: wrap;
gap: 20px;
padding: 30px;
margin-top: 80px;
}
.newsletter-content {
h3 {
color: $white;
}
p {
color: rgba(255, 255, 255, 0.7);
}
}
form {
max-width: 587px;
width: 100%;
}
.form-clt {
position: relative;
.input-icon {
top: 50%;
left: 25px;
transform: translateY(-50%);
position: absolute;
@include breakpoint (max-sm) {
top: 23%;
}
}
input {
width: 100%;
outline: none;
border: none;
background-color: $white;
color: $text-color;
line-height: 1;
padding: 25px 0px 25px 60px;
border-radius: 100px;
max-width: 587px;
@include breakpoint (max-lg) {
padding: 20px 0px 20px 60px;
}
&::placeholder {
color: $text-color;
}
}
.theme-btn {
position: absolute;
top: 4px;
right: 4px;
bottom: 4px;
text-transform: uppercase;
border: 1px solid rgba(203, 204, 207, 0.24);
@include breakpoint (max-xxs){
position: static;
margin-top: 20px;
color: $white;
}
}
}
}
.fotter-bootom-2 {
border-top: 1px solid rgba(203, 204, 207, 0.24);
padding: 20px 0;
.footer-wrapper {
@include flex;
justify-content: center;
gap: 100px;
@include breakpoint (max-xxl) {
flex-wrap: wrap;
gap: 20px;
}
@include breakpoint (max-sm) {
justify-content: start;
}
p {
color: $white;
@include breakpoint (max-sm) {
text-align: center;
}
span {
color: $theme-color;
text-transform: uppercase;
}
}
.bottom-list {
@include flex;
gap: 40px;
@include breakpoint (max-xxl) {
flex-wrap: wrap;
gap: 20px;
}
@include breakpoint (max-sm) {
justify-content: center;
}
li {
a {
color: $white;
&:hover {
color: $theme-color;
}
}
}
}
}
}
.footer-widget-wrapper-3 {
padding: 70px 0 100px;
position: relative;
@include breakpoint (max-xxl) {
padding: 70px 0 100px;
}
@include breakpoint (max-lg) {
padding: 50px 0 80px;
}
&::before {
position: absolute;
content: "";
width: 1px;
height: 424px;
left: 600px;
background-color: rgba(203, 204, 207, 0.24);
top: 0;
bottom: 0;
@include breakpoint (max-xxl) {
display: none;
}
}
.single-footer-widget {
margin-top: 30px;
.widget-title {
margin-bottom: 24px;
h3 {
color: $white;
text-transform: uppercase;
}
}
.footer-content {
h3 {
color: $white;
margin-bottom: 10px;
}
p {
color: $white;
opacity: 0.7;
max-width: 551px;
margin-bottom: 30px;
}
form {
max-width: 551px;
width: 100%;
}
.form-clt {
position: relative;
input {
width: 100%;
outline: none;
border: none;
background-color: $white;
color: $text-color;
line-height: 1;
padding: 25px 0px 25px 25px;
border-radius: 100px;
max-width: 551px;
@include breakpoint (max-xxl) {
padding: 20px 0px 20px 10px;
font-size: 14px;
}
@include breakpoint (max-lg) {
padding: 20px 0px 20px 10px;
font-size: 14px;
}
@include breakpoint (max-sm) {
font-size: 14px;
}
&::placeholder {
color: $text-color;
}
}
.theme-btn {
position: absolute;
top: 4px;
right: 4px;
bottom: 4px;
text-transform: uppercase;
border: 1px solid rgba(203, 204, 207, 0.24);
background-color: $bg-color;
&:hover {
background-color: $theme-color;
color: $white;
}
@include breakpoint (max-xxl){
right: 0;
top: 0;
bottom: 0;
padding: 2px 4px 2px 12px;
font-size: 14px;
i {
margin-left: 10px;
}
}
}
}
h6 {
color: $white;
margin-top: 15px;
span {
color: $theme-color;
text-transform: uppercase;
font-size: 18px;
font-weight: 400;
}
}
}
.contact-content {
p {
color: $white;
opacity: 0.7;
margin-bottom: 24px;
}
h3 {
color: $white;
}
.contact-list {
margin-top: 16px;
li {
@include flex;
gap: 32px;
a {
color: $white;
opacity: 0.7;
}
}
}
}
.list {
li {
@include transition;
font-weight: 400;
&:not(:last-child){
margin-bottom: 20px;
}
a {
color: rgba(255, 255, 255, 0.7);
}
&:hover {
margin-left: 5px;
a {
color: $theme-color;
}
}
}
}
}
}
.footer-top-item {
@include flex;
justify-content: space-between;
border-bottom: 1px solid rgba(203, 204, 207, 0.24);
@include breakpoint (max-lg) {
flex-wrap: wrap;
gap: 30Px;
padding-bottom: 10px;
}
.footer-logo {
background-color: $theme-color-2;
padding: 18px 30px;
}
.top-list {
@include flex;
gap: 40px;
@include breakpoint (max-xxl) {
gap: 20Px;
}
@include breakpoint (max-lg) {
flex-wrap: wrap;
gap: 15Px;
}
li {
a {
font-weight: 500;
text-transform: uppercase;
color: $white;
&:hover {
color: $theme-color;
}
}
}
}
.social-item {
@include flex;
gap: 12px;
a {
width: 40px;
height: 40px;
line-height: 40px;
background-color: $theme-color-2;
border-radius: 100px;
color: $white;
text-align: center;
&:hover {
background-color: $theme-color;
}
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,501 +0,0 @@
//page scroll bar add
::-webkit-scrollbar {
width: 8px;
height: 8px;
}
/* Track */
::-webkit-scrollbar-track {
box-shadow: inset 0 0 5px $bg-color;
border-radius: 5px;
}
/* Handle */
::-webkit-scrollbar-thumb {
background: $theme-color;
border-radius: 10px;
}
//page scroll bar add
//Basic Code Start
.fix {
overflow: hidden;
}
.ralt{
position: relative;
}
//Basic Code End
//Video Css Start
.ripple {
position: relative;
&::before,&::after {
position: absolute;
left: 50%;
top: 50%;
width: 50px;
height: 50px;
-webkit-transform: translateX(-50%) translateY(-50%);
transform: translateX(-50%) translateY(-50%);
border-radius: 50%;
box-shadow: 0 0 0 0 rgba(255, 193, 7, 0.6);
-webkit-animation: rippleOne 3s infinite;
animation: rippleOne 3s infinite;
}
&::before {
-webkit-animation-delay: 0.9s;
animation-delay: 0.9s;
content: "";
position: absolute;
right: 0;
bottom: 0;
}
&::after {
-webkit-animation-delay: 0.6s;
animation-delay: 0.6s;
content: "";
position: absolute;
right: 0;
bottom: 0;
}
}
//Video Css End
.array-buttons {
@include flex;
gap: 20px;
@include breakpoint (max-xl) {
flex-wrap: wrap;
}
.array-prev {
width: 110px;
height: 48px;
line-height: 45px;
text-align: center;
background-color: transparent;
color: $header-color;
@include transition;
border-radius: 100px;
border: 1px solid $header-color;
font-weight: 600;
i {
margin-left: 5px;
transform: rotate(45deg);
}
&:hover {
background: $theme-color-2;
color: $header-color;
border: 1px solid $theme-color-2;
}
}
.array-next {
width: 110px;
height: 48px;
line-height: 45px;
text-align: center;
background-color: $theme-color-2;
color: $header-color;
@include transition;
border-radius: 100px;
font-weight: 600;
text-transform: uppercase;
i {
margin-left: 5px;
transform: rotate(-45deg);
}
&:hover {
background: $header-color;
color: $white;
}
}
}
.array-buttons-2 {
@include flex;
gap: 20px;
@include breakpoint (max-xl) {
flex-wrap: wrap;
}
.array-prev {
width: 42px;
height: 42px;
line-height: 42px;
text-align: center;
background-color: $header-color;
color: #00E5FF;
@include transition;
border-radius: 100%;
&:hover {
background: $theme-color;
color: $white;
}
}
.array-next {
width: 42px;
height: 42px;
line-height: 42px;
border-radius: 100%;
text-align: center;
background: #2ADDC8;
color: $header-color;
@include transition;
&:hover {
background: $theme-color;
color: $white;
}
}
}
.array-buttons-4 {
@include flex;
gap: 20px;
@include breakpoint (max-xl) {
flex-wrap: wrap;
}
.array-prev {
width: 45px;
height: 45px;
line-height: 45px;
text-align: center;
background: $bg-color;
color: $white;
@include transition;
border-radius: 100%;
}
.array-next {
width: 45px;
height: 45px;
line-height: 45px;
border: 1px solid rgba(65, 65, 65, 1);
border-radius: 100%;
text-align: center;
background: transparent;
color: $white;
@include transition;
&:hover {
background: $bg-color;
border: 1px none;
color: $white;
}
}
}
//pagination default
//pagination default
.swiper-dot {
text-align: center;
margin-top: 30px;
.swiper-pagination-bullet {
width: 10px;
height: 10px;
transition: 0.6s;
border-radius: 30px;
background-color: $theme-color-2;
opacity: 1;
position: relative;
&:not(:last-child){
margin-right: 15px;
}
}
.swiper-pagination-bullet.swiper-pagination-bullet-active {
background-color: $theme-color;
transition: 0.6s;
position: relative;
width: 10px;
height: 10px;
border-radius: 30px;
&::before {
@include before;
width: 10px;
height: 10px;
left: 50%;
top: 50%;
transform: translate(-50%,-50%);
border-radius: 30px;
}
}
}
.swiper-dot-2 {
text-align: center;
margin-top: 30px;
.swiper-pagination-bullet {
width: 16px;
height: 16px;
transition: 0.6s;
border-radius: 30px;
background-color: transparent;
border: 2px solid $header-color;
opacity: 1;
position: relative;
&:not(:last-child){
margin-right: 15px;
}
}
.swiper-pagination-bullet.swiper-pagination-bullet-active {
border: 2px solid $header-color;
transition: 0.6s;
position: relative;
width: 16px;
height: 16px;
border-radius: 30px;
&::before {
@include before;
width: 10px;
height: 10px;
left: 50%;
top: 50%;
transform: translate(-50%,-50%);
border-radius: 30px;
}
}
}
.bg-cover {
background-repeat: no-repeat;
background-size: cover;
position: relative;
background-position: center;
}
.slide-transtion {
-webkit-transition-timing-function: linear;
transition-timing-function: linear;
}
.brand-slide-element {
width: auto;
display: inline-block;
}
.page-nav-wrap {
margin-top: 60px;
@include breakpoint (max-xl) {
margin-top: 30px;
}
ul {
li {
display: inline-block;
.page-numbers {
&.current {
background: linear-gradient(180deg, #1539EE 0%, #2ADDC8 100%);
color: $white;
border-radius: 10px;
}
display: inline-block;
width: 40px;
height: 40px;
line-height: 40px;
text-align: center;
background-color: transparent;
border: 1px solid $theme-color-2;
color: $header-color;
@include transition;
border-radius: 10px;
font-weight: 600;
transition: all 0.3s ease-in-out;
margin: 0 2px;
&.style-2 {
display: inline-block;
width: 40px;
height: 40px;
line-height: 40px;
text-align: center;
background-color: $theme-color-2;
color: $white;
@include transition;
border-radius: 10px;
border: 1px solid $header-color;
font-weight: 600;
transition: all 0.3s ease-in-out;
}
@media (max-width: 767px) {
margin-top: 10px;
width: 40px;
height: 40px;
line-height: 40px;
font-size: 14px;
}
i {
margin-top: 2px;
color: $white;
@include transition;
}
&:hover {
background: $theme-color-2;
color: $white;
border: 1px solid $theme-color-2;
i {
color: $white;
}
}
}
}
}
}
.sticky-style {
position: sticky !important;
top: 100px;
}
.custom-container {
max-width: 1700px;
margin: 0 auto;
}
.bw-img-anim-left,
.bw-img-anim-right {
transition: clip-path 0.5s ease-out;
}
.split-text {
overflow: hidden;
position: relative;
}
.split-text .line {
overflow: hidden;
display: none;
}
html.lenis, html.lenis body {
height: auto;
}
.smooth-content {
position: relative;
}
.lenis.lenis-smooth {
scroll-behavior: auto !important;
}
//>>>>> Nice Select Css Start <<<<<//
.nice-select {
background-color: transparent;
width: unset;
outline: none;
// border-bottom: 2px solid $border-color !important;
border: none;
border-radius: 0;
padding: 0;
}
.nice-select .current {
margin-right: 12px;
}
.nice-select.open .list {
background: $bg-color;
margin-top: 16px;
width: 100%;
// text-transform: capitalize;
color: $text-color;
}
.nice-select .option.selected.focus {
background: $bg-color;
outline: none;
color: $text-color;
// text-transform: capitalize;
font-weight: 500;
font-size: 14px;
border: none;
}
.nice-select .option {
border: none;
}
.nice-select .option:hover {
background: transparent;
}
//>>>>> Nice Select Css End <<<<<//
.p-relative {
position: relative;
}
.tp-clip-anim {
position: relative;
overflow: hidden;
.mask {
position: absolute;
inset: 0;
background-size: cover;
background-position: center;
transform: scale(1.1);
opacity: 0;
animation: reveal 1s forwards;
}
// delay for each slice
@for $i from 1 through 9 {
.mask-#{$i} {
clip-path: inset(0 #{(9 - $i) * 11.1%} 0 #{($i - 1) * 11.1%});
animation-delay: #{$i * 0.1}s;
}
}
}
@keyframes reveal {
from {
opacity: 0;
transform: scale(1.2);
}
to {
opacity: 1;
transform: scale(1);
}
}

View File

@@ -1,622 +0,0 @@
.hero-1 {
margin: 0 40px;
border-radius: 32px;
position: relative;
z-index: 9;
@include breakpoint (max-xxl) {
margin: 0 30px;
padding-top: 100px;
padding-bottom: 100px;
}
@include breakpoint (max-lg) {
padding-top: 80px;
padding-bottom: 0;
}
@include breakpoint (max-sm) {
margin: 0 15px;
}
.pagi-item {
right: 60px;
top: 345px;
position: absolute;
z-index: 999;
@include breakpoint (max-xxxl) {
top: 310px;
}
@include breakpoint (max-xxl) {
display: none;
}
.dot-number {
@include flex;
gap: 20px;
.swiper-pagination-bullet {
background: none !important;
width: auto !important;
height: auto !important;
margin: 0 !important;
@include transition;
}
.swiper-pagination-bullet-active {
.dot-num {
span {
color: $white;
font-size: 32px;
font-weight: 700;
@include transition;
}
}
}
.dot-num {
@include transition;
span {
font-size: 18px;
font-weight: 500;
color: rgba(255, 255, 255, 0.50);
@include transition;
}
}
}
}
.left-shape {
position: absolute;
left: 0;
bottom: 0;
@include breakpoint (max-xxl) {
display: none;
}
}
.hero-shape {
position: absolute;
z-index: -1;
right: 10px;
bottom: 0;
margin-right: 0;
@include breakpoint (max-xxxl) {
max-width: 660px;
}
@include breakpoint (max-xxl) {
display: none;
max-width: initial;
}
img {
@include imgw;
}
}
.top-shape {
position: absolute;
top: 0;
right: 0;
@include breakpoint (max-xxl) {
display: none;
}
img {
@include imgw;
}
}
.right-shape {
position: absolute;
right: 0;
top: 0;
@include breakpoint (max-xxl) {
display: none;
}
}
.container-fluid {
padding: 0 124px;
@include breakpoint (max-xl4) {
padding: 0 70px;
}
@include breakpoint (max-xxxl) {
padding: 0 50px;
}
@include breakpoint (max-xxl) {
padding: 0 30px;
}
@include breakpoint (max-sm) {
padding: 0 15px;
}
}
.hero-content {
h6 {
font-size: 18px;
font-weight: 500;
color: $white;
margin-bottom: 20px;
line-height: 1;
padding: 8px 16px;
border-radius: 100px;
display: inline-block;
position: relative;
background-color: $bg-color-2;
}
h1 {
color: $white;
text-transform: uppercase;
margin-bottom: 15px;
.video-btn {
width: 64px;
height: 64px;
line-height: 64px;
display: inline-block;
background-color: $theme-color;
color: $white;
text-align: center;
border-radius: 50%;
font-size: 20px;
margin-left: 60px;
position: relative;
z-index: 1;
transform: translateY(-15px);
@include breakpoint (max-xxxl) {
width: 50px;
height: 50px;
line-height: 50px;
}
@include breakpoint (max-xxl) {
display: none;
}
&::before {
position: absolute;
content: "";
background: rgba(203, 204, 207, 0.24);
width: 48px;
height: 1px;
left: -57px;
top: 30px;
}
&::after {
content: "";
position: absolute;
top: -10px;
left: -10px;
right: -10px;
bottom: -10px;
border: 10px solid rgba(255, 255, 255, 0.12);
border-radius: 50%;
z-index: -1;
}
}
}
p {
max-width: 671px;
color: rgba(255, 255, 255, 0.8);
padding-left: 30px;
border-left: 2px solid $white;
opacity: 0.8;
@include breakpoint (max-xxl) {
border-left: none;
padding-left: 0;
}
}
.hero-button {
@include flex;
gap: 35px;
margin-top: 50px;
@include breakpoint (max-xxl) {
margin-top: 30px;
flex-wrap: wrap;
gap: 25px;
}
.theme-btn {
background-color: $white;
&:hover {
background-color: $theme-color;
border: 1px solid $theme-color;
}
&.style-2 {
border: 1px solid $border-color-2;
background-color: transparent;
color: $white;
i {
background-color: $white;
color: $header-color;
}
&:hover {
background-color: $theme-color;
color: $white;
border: 1px solid $theme-color;
}
}
}
}
}
.hero-image {
margin-top: 20px;
margin-right: -140px;
position: relative;
z-index: 9;
@include breakpoint (max-xxl) {
margin-right: 0;
}
img {
@include imgw;
opacity: 0;
transform: translateY(50px);
transition: all 0.8s ease-in-out;
}
}
.swiper-slide-active {
.hero-image {
img {
opacity: 1;
transform: translateY(0);
}
}
}
}
.hero-2 {
position: relative;
@include breakpoint (max-xxl) {
padding-top: 100px;
padding-bottom: 100px;
}
@include breakpoint (max-lg) {
padding-top: 80px;
padding-bottom: 0;
}
.shape {
position: absolute;
left: 0;
top: 0;
@include breakpoint (max-xxl) {
display: none;
}
}
.container-fluid {
padding: 0 65px;
@include breakpoint (max-xxxl) {
padding: 0 50px;
}
@include breakpoint (max-xxl) {
padding: 0 40px;
}
@include breakpoint (max-xxl) {
padding: 0 30px;
}
@include breakpoint (max-sm) {
padding: 0 15px;
}
}
&::before {
@include before;
background:
linear-gradient(279deg, rgba(21, 26, 38, 0.88) 34.84%, rgba(21, 26, 38, 0) 84.02%);
}
.hero-image {
margin-top: 30px;
position: relative;
margin-left: -75px;
@include breakpoint (max-xxl) {
margin-left: 0;
margin-top: 0;
}
img {
@include imgw;
}
}
.hero-content {
position: relative;
z-index: 999;
h6 {
color: $white;
font-size: 18px;
font-weight: 500;
letter-spacing: 6px;
text-transform: uppercase;
margin-bottom: 20px;
}
h1 {
color: $white;
text-transform: uppercase;
margin-bottom: 20px;
}
p {
color: $white;
max-width: 800px;
padding-left: 24px;
border-left: 3px solid $white;
@include breakpoint (max-xxl) {
border-left: none;
padding-left: 0;
}
}
.hero-button {
@include flex;
gap: 35px;
margin-top: 50px;
@include breakpoint (max-xxl) {
flex-wrap: wrap;
gap: 25px;
}
.theme-btn {
background-color: $white;
&:hover {
background-color: $theme-color;
border: 1px solid $theme-color;
}
&.style-2 {
border: 1px solid $border-color-2;
background-color: transparent;
color: $white;
i {
background-color: $white;
color: $header-color;
}
&:hover {
background-color: $theme-color;
color: $white;
border: 1px solid $theme-color;
}
}
}
}
}
}
.hero-3 {
position: relative;
z-index: 9;
@include breakpoint (max-xxl) {
margin: 0 30px;
padding-top: 100px;
padding-bottom: 100px;
}
@include breakpoint (max-lg) {
padding-top: 80px;
padding-bottom: 0;
}
@include breakpoint (max-sm) {
margin: 0 15px;
}
.pagi-item {
right: 60px;
bottom: 120px;
position: absolute;
z-index: 999;
@include breakpoint (max-xxl) {
display: none;
}
.dot-number {
@include flex;
gap: 20px;
.swiper-pagination-bullet {
background: none !important;
width: auto !important;
height: auto !important;
margin: 0 !important;
@include transition;
}
.swiper-pagination-bullet-active {
.dot-num {
span {
color: $white;
font-size: 32px;
font-weight: 700;
@include transition;
}
}
}
.dot-num {
@include transition;
span {
font-size: 18px;
font-weight: 500;
color: rgba(255, 255, 255, 0.50);
@include transition;
}
}
}
}
.hero-shape {
position: absolute;
z-index: -1;
left: 0;
top: 0;
@include breakpoint (max-xxxl) {
max-width: 660px;
}
@include breakpoint (max-xxl) {
display: none;
max-width: initial;
}
img {
@include imgw;
}
}
.container-fluid {
padding: 0 124px;
@include breakpoint (max-xl4) {
padding: 0 70px;
}
@include breakpoint (max-xxxl) {
padding: 0 50px;
}
@include breakpoint (max-xxl) {
padding: 0 30px;
}
@include breakpoint (max-sm) {
padding: 0 15px;
}
}
.hero-content {
h6 {
font-size: 18px;
font-weight: 500;
color: $theme-color;
margin-bottom: 20px;
}
h1 {
color: $white;
text-transform: uppercase;
margin-bottom: 15px;
}
p {
max-width: 772px;
color: rgba(255, 255, 255, 0.8);
opacity: 0.8;
}
.hero-button {
@include flex;
gap: 35px;
margin-top: 50px;
@include breakpoint (max-xxl) {
margin-top: 30px;
flex-wrap: wrap;
gap: 25px;
}
.theme-btn {
background-color: $white;
&:hover {
background-color: $theme-color;
border: 1px solid $theme-color;
}
&.style-2 {
border: 1px solid $border-color-2;
background-color: transparent;
color: $white;
i {
background-color: $white;
color: $header-color;
}
&:hover {
background-color: $theme-color;
color: $white;
border: 1px solid $theme-color;
}
}
}
}
}
.hero-image {
margin-top: 20px;
position: relative;
z-index: 9;
@include breakpoint (max-xxl) {
margin-right: 0;
}
img {
@include imgw;
opacity: 0;
transform: translateY(50px);
transition: all 0.8s ease-in-out;
}
}
.swiper-slide-active {
.hero-image {
img {
opacity: 1;
transform: translateY(0);
}
}
}
}

View File

@@ -1,95 +0,0 @@
.mean-container a.meanmenu-reveal {
display: none;
}
.mean-container .mean-nav {
background: none;
margin-top: 0;
}
.mean-container .mean-bar {
padding: 0;
min-height: auto;
background: none;
background: none;
}
.mean-container .mean-nav > ul {
padding: 0;
margin: 0;
width: 100%;
list-style-type: none;
display: block !important;
}
.mean-container a.meanmenu-reveal {
display: none !important;
}
.mean-container .mean-nav ul li a {
display: block;
width: 100%;
padding: 10px 0;
color: $black;
font-size: 16px;
font-weight: 600;
line-height: 2;
font-weight: 700;
// text-transform: capitalize;
border-bottom: 1px solid rgba(0, 0, 0, 0.20) !important;
border: none;
&:hover {
color: $theme-color-2;
}
}
.mean-container .mean-nav ul li .submenu li a {
border-bottom: none !important;
font-size: 14px;
padding: 6px 0;
color: $header-color;
}
.mean-container .mean-nav ul li a:last-child {
border-bottom: 0;
}
.mean-container .mean-nav ul li a:hover {
color: $theme-color;
}
.mean-container .mean-nav ul li a.mean-expand {
margin-top: 5px;
padding: 0 !important;
}
.mean-container .mean-nav ul li > a > i {
display: none;
}
.mean-container .mean-nav ul li > a.mean-expand i {
display: inline-block;
font-size: 18px;
}
.mean-container .mean-nav > ul > li:first-child > a {
border-top: 0;
}
.mean-container .mean-nav ul li a.mean-expand.mean-clicked i {
transform: rotate(45deg);
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-ms-transform: rotate(45deg);
-o-transform: rotate(45deg);
@include transition;
}
.mean-container .mean-nav ul li .mega-menu li a {
height: 200px;
width: 100%;
padding: 0;
border-top: 0;
margin-bottom: 20px;
}

View File

@@ -1,130 +0,0 @@
@mixin breakpoint($point) {
@if $point==xsmall {
@media (min-width: 450px) {
@content ;
}
}
@else if $point==max-xxsmall {
@media (max-width:450px) {
@content ;
}
}
@if $point==xxs {
@media (min-width: 470px) {
@content ;
}
}
@else if $point==max-xxs {
@media (max-width:470px) {
@content ;
}
}
@if $point==xs {
@media (min-width: 500px) {
@content ;
}
}
@else if $point==max-xs {
@media (max-width: 500px) {
@content ;
}
}
@if $point==sm {
@media (min-width: 576px) {
@content ;
}
}
@else if $point==max-sm {
@media (max-width: 575px) {
@content ;
}
}
@else if $point==md {
@media (min-width: 768px) {
@content ;
}
}
@else if $point==max-md {
@media (max-width: 767px) {
@content ;
}
}
@else if $point==lg {
@media (min-width: 992px) {
@content ;
}
}
@else if $point==max-lg {
@media (max-width: 991px) {
@content ;
}
}
@else if $point==xl {
@media (min-width: 1200px) {
@content ;
}
}
@else if $point==max-xl {
@media (max-width: 1199px) {
@content ;
}
}
@else if $point==xxl {
@media (min-width: 1400px) {
@content ;
}
}
@else if $point==max-xxl {
@media (max-width: 1399px) {
@content ;
}
}
@else if $point==xxxl {
@media (min-width: 1600px) {
@content ;
}
}
@else if $point==max-xxxl {
@media (max-width: 1600px) {
@content ;
}
}
@else if $point==xl4 {
@media (min-width: 1899px) {
@content ;
}
}
@else if $point==max-xl4 {
@media (max-width: 1899px) {
@content ;
}
}
}
@mixin before {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
width: 100%;
height: 100%;
content: "";
}
@mixin flex {
display: flex;
align-items: center;
}
@mixin transition {
transition: all 0.4s ease-in-out;
}
@mixin imgw {
width: 100%;
height: 100%;
}

View File

@@ -1,886 +0,0 @@
.news-card-item {
margin-top: 30px;
background-color: $bg-color;
border-radius: 16px;
.news-image {
position: relative;
border-top-left-radius: 16px;
border-top-right-radius: 16px;
overflow: hidden;
span {
border-radius: 100px;
background-color: $white;
color: $header-color;
font-size: 14px;
font-weight: 400;
padding: 4px 12px;
position: absolute;
top: 16px;
left: 16px;
z-index: 999;
}
.news-layer-wrapper {
position: absolute;
top: 100%;
left: 0;
width: 100%;
height: 100%;
display: flex;
transition: 0.5s;
.news-layer-image {
width: 25%;
height: 100%;
transition: 0.5s;
background-size: cover;
&:nth-child(1){
background-position: 0;
transition-delay: 0;
}
&:nth-child(2){
background-position: 33.33%;
transition-delay: 0.1s;
}
&:nth-child(3){
background-position: 66.66%;
transition-delay: 0.2s;
}
&:nth-child(4){
background-position: 100%;
transition-delay: 0.3s;
}
}
}
img {
@include imgw;
border-top-left-radius: 16px;
border-top-right-radius: 16px;
transform: scale(1.02);
transition: all 1.5s ease-out;
}
}
.news-content {
padding: 16px 24px 30px;
.list {
@include flex;
gap: 24px;
margin-bottom: 10px;
}
h3 {
a {
background-position: 0 95%;
background-repeat: no-repeat;
background-size: 0% 2px;
display: inline;
&:hover {
color: $theme-color;
background-size: 100% 2px;
background-image: linear-gradient(180deg, $theme-color 0%, $theme-color 100%);
}
}
}
.news-bottom {
@include flex;
justify-content: space-between;
border-top: 1px solid rgba(203, 204, 207, 0.24);
padding-top: 24px;
margin-top: 16px;
.info-item {
@include flex;
gap: 8px;
}
}
}
&:hover {
.news-image {
.news-layer-wrapper {
.news-layer-image {
transform: translateY(-100%);
}
}
img {
-webkit-transform: scale3d(1.1, 1.1, 1);
transform: scale3d(1.1, 1.1, 1);
}
}
}
}
.news-main-item {
border-radius: 16px;
background-color: $bg-color;
padding: 30px;
@include flex;
justify-content: space-between;
margin-top: 30px;
@include breakpoint (max-xxl) {
flex-wrap: wrap;
gap: 30px;
}
.news-left-content {
h2 {
sup {
font-size: 32px;
top: auto;
@include breakpoint (max-lg) {
font-size: 30px;
}
@include breakpoint (max-lg) {
font-size: 25px;
}
}
span {
font-size: 16px;
font-weight: 400;
}
}
h3 {
@include breakpoint (max-xl) {
br {
display: none;
}
}
a {
background-position: 0 95%;
background-repeat: no-repeat;
background-size: 0% 2px;
display: inline;
&:hover {
color: $theme-color;
background-size: 100% 2px;
background-image: linear-gradient(180deg, $theme-color 0%, $theme-color 100%);
}
}
}
.news-post {
@include flex;
justify-content: space-between;
margin-top: 30px;
@include breakpoint (max-lg) {
flex-wrap: wrap;
gap: 20px;
}
span {
text-transform: uppercase;
font-weight: 500;
color: $header-color;
}
}
}
.news-right-content {
@include flex;
gap: 30px;
@include breakpoint (max-lg) {
flex-wrap: wrap;
gap: 20px;
}
.news-image {
overflow: hidden;
transition: scale 0.4s ease, transform 0.4s ease;
@include breakpoint (max-lg) {
flex-basis: 100%;
}
img {
@include imgw;
border-radius: 16px;
}
}
.content {
p {
max-width: 388px;
margin-bottom: 30px;
}
.theme-btn {
padding: 2px 4px 2px 24px;
}
}
}
}
.news-card-items-3 {
@include flex;
border-radius: 16px;
background-color: $white;
margin-top: 30px;
@include breakpoint (max-xxl) {
flex-wrap: wrap;
gap: 30px;
padding: 10px;
}
@include breakpoint (max-lg) {
flex-wrap: initial;
gap: 30px;
padding: 0;
}
@include breakpoint (max-md) {
flex-wrap: wrap;
gap: 30px;
padding: 10px;
}
.news-image {
@include breakpoint (max-xxl) {
flex-basis: 100%;
}
@include breakpoint (max-lg) {
flex-basis: initial;
}
@include breakpoint (max-sm) {
flex-basis: 100%;
}
img {
border-top-left-radius: 16px;
border-bottom-left-radius: 16px;
@include breakpoint (max-xxl) {
@include imgw;
border-radius: 16px;
}
@include breakpoint (max-lg) {
width: initial;
height: initial;
border-top-left-radius: 16px;
border-bottom-left-radius: 16px;
}
@include breakpoint (max-sm) {
@include imgw;
border-radius: 16px;
}
}
}
.news-content {
padding: 25px 25px 25px 30px;
@include breakpoint (max-lg) {
padding: 0 25px;
}
h3 {
a {
background-position: 0 95%;
background-repeat: no-repeat;
background-size: 0% 2px;
display: inline;
&:hover {
color: $theme-color;
background-size: 100% 2px;
background-image: linear-gradient(180deg, $theme-color 0%, $theme-color 100%);
}
}
}
.info-item {
@include flex;
gap: 26px;
margin-top: 15px;
margin-bottom: 25px;
@include breakpoint (max-lg) {
flex-wrap: wrap;
gap: 10px;
}
.info-image {
@include flex;
gap: 8px;
h6 {
font-weight: 500;
text-transform: uppercase;
}
}
}
.theme-btn {
border: none;
padding: 0;
&:hover {
background-color: transparent;
color: $theme-color;
i {
background-color: $header-color;
color: $white;
}
}
}
}
}
.news-standard-wrapper {
.news-standard-post {
margin-bottom: 30px;
.news-image {
img {
@include imgw;
border-radius: 16px;
}
}
.news-content {
margin-top: 24px;
.news-list {
@include flex;
gap: 40px;
margin-bottom: 16px;
@include breakpoint (max-xxl) {
flex-wrap: wrap;
gap: 10px;
}
li {
i {
margin-right: 8px;
}
}
}
h3 {
margin-bottom: 10px;
a {
background-position: 0 95%;
background-repeat: no-repeat;
background-size: 0% 2px;
display: inline;
&:hover {
color: $theme-color;
background-size: 100% 2px;
background-image: linear-gradient(180deg, $theme-color 0%, $theme-color 100%);
}
}
}
p {
margin-bottom: 40px;
@include breakpoint (max-xxl) {
margin-bottom: 30px;
}
}
.theme-btn {
padding: 4px 4px 4px 24px;
}
}
}
}
.main-sideber {
.news-sideber-box {
padding: 30px;
background-color: $bg-color;
border-radius: 16px;
margin-bottom: 32px;
.wid-title {
border-bottom: 1px solid rgba(203, 204, 207, 0.24);
padding-bottom: 16px;
margin-bottom: 24px;
}
.search-widget {
form {
width: 100%;
position: relative;
input {
background-color: $white;
font-size: 16px;
font-weight: 400;
padding: 16px 20px;
width: 100%;
border: none;
color: $text-color;
border-radius: 100px;
}
button {
position: absolute;
right: 3px;
top: 3px;
bottom: 3px;
width: 50px;
height: 50px;
line-height: 50px;
border-radius: 100px;
font-size: 16px;
background-color: $theme-color;
color: $white;
text-align: center;
transition: all .3s ease-in-out;
&:hover {
background-color: $header-color;
}
}
}
}
.news-widget-categories {
ul {
li {
@include flex;
justify-content: space-between;
font-size: 16px;
font-weight: 400;
background-color: $white;
@include transition;
border-radius: 100px;
line-height: 1;
padding: 20px;
position: relative;
@include breakpoint (max-xxl) {
font-size: 14px;
}
i {
margin-right: 5px;
color: $theme-color-2;
}
&::before {
content: "";
position: absolute;
top: 0;
left: 0;
width: 0%;
height: 100%;
background: $theme-color;
z-index: 0;
transition: width 0.5s ease;
border-radius: 100px;
}
a {
color: $header-color;
}
span {
@include transition;
color: $header-color;
}
&:not(:last-child){
margin-bottom: 20px;
}
&:hover {
&::before {
width: 100%;
}
i {
color: $white;
}
a {
color: $white;
position: relative;
z-index: 999;
}
span {
color: $white;
position: relative;
z-index: 999;
}
}
}
}
}
.recent-post-area {
.recent-items {
@include flex;
gap: 20px;
&:not(:last-child){
margin-bottom: 20px;
}
.recent-thumb {
img {
border-radius: 8px;
}
}
.recent-content {
h6 {
margin-bottom: 10px;
line-height: 133%;
font-weight: 500;
font-size: 18px;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
@include breakpoint (max-xxl) {
font-size: 15px;
}
a {
&:hover {
color: $theme-color;
}
}
}
ul {
li {
color: $text-color;
}
}
}
}
}
.tagcloud {
a {
display: inline-block;
padding: 12px 11px;
line-height: 1;
font-size: 16px;
font-weight: 400;
background: $white;
border-radius: 100px;
margin-right: 5px;
// text-transform: capitalize;
margin-bottom: 10px;
color: $text-color;
@include transition;
position: relative;
&::before {
content: "";
position: absolute;
top: 0;
left: 0;
width: 0%;
height: 100%;
background: $theme-color;
border-radius: 100px;
z-index: 0;
transition: width 0.5s ease;
}
&:last-child {
margin-right: 0;
}
&:hover {
color: $white;
z-index: 999;
position: relative;
&::before {
width: 100%;
z-index: -1;
}
}
}
}
}
}
.news-details-wrapper {
.news-details-post {
.news-details-image {
img {
@include imgw;
border-radius: 16px;
}
}
.details-content {
margin-top: 24px;
.news-list {
@include flex;
gap: 40px;
margin-bottom: 16px;
@include breakpoint (max-xxl) {
flex-wrap: wrap;
gap: 10px;
}
li {
i {
margin-right: 8px;
}
}
}
h2 {
font-size: 40px;
margin-bottom: 10px;
@include breakpoint (max-xxl) {
font-size: 20px;
}
}
.thumb {
img {
width: 410px;
height: 264px;
object-fit: cover;
border-radius: 16px;
}
}
.sideber {
background-color: $theme-color-2;
padding: 24px 30px;
margin-top: 24px;
margin-bottom: 24px;
border-radius: 8px;
h5 {
color: $white;
font-weight: 500;
@include breakpoint (max-xxl) {
font-size: 16px;
}
}
}
.tag-share-wrap {
.tagcloud {
span {
font-size: 20px;
font-weight: 600;
display: inline-block;
margin-right: 8px;
color: $header-color;
font-family: $heading-font;
}
a {
display: inline-block;
padding: 12px 26px;
line-height: 1;
background: $bg-color;
margin-right: 8px;
// text-transform: capitalize;
color: $text-color;
font-weight: 400;
@include transition;
border-radius: 30px;
@include breakpoint (max-xl){
padding: 10px 18px;
}
@include breakpoint (max-xl){
margin-bottom: 15px;;
}
&:hover {
background-color: $theme-color;
color: $white;
}
}
}
.social-share {
a {
font-size: 16px;
color: $header-color;
display: inline-block;
width: 36px;
height: 36px;
border-radius: 100px;
line-height: 36px;
text-align: center;
background-color: $bg-color;
&:not(:last-child){
margin-right: 10px;
}
&:hover {
color: $white;
background-color: $theme-color;
}
}
}
}
.comments-area {
margin-top: 40px;
border-top: 1px solid rgba(203, 204, 207, 0.24);
margin-top: 48px;
padding-top: 30px;
margin-bottom: 48px;
border-bottom: 1px solid rgba(203, 204, 207, 0.24);
@include breakpoint (max-xxl) {
margin-bottom: 30px;
}
.comments-heading {
margin-bottom: 30px;
@include breakpoint (max-sm){
margin-bottom: 20px;
}
}
.news-single-comment {
@include breakpoint (max-sm){
flex-wrap: wrap;
gap: 20px;
}
.image {
img {
border-radius: 12px;
}
}
.content {
.head {
.con {
h4 {
margin-bottom: 5px;
}
}
.reply {
font-weight: 500;
font-size: 16px;
color: $theme-color;
padding: 6px 14px;
text-transform: uppercase;
color: $white;
background-color: $header-color;
border-radius: 100px;
&:hover {
background-color: $theme-color;
}
}
}
}
&.style-2 {
margin-left: 90px;
@include breakpoint (max-xxl){
margin-left: 0;
}
}
}
}
.form-clt {
position: relative;
span {
color: $header-color;
font-size: 18px;
font-weight: 500;
font-family: $heading-font;
margin-bottom: 10px;
display: inline-block;
}
input,textarea {
width: 100%;
border: none;
outline: none;
background: $bg-color;
color: $text-color;
border-radius: 100px;
padding: 18px 20px;
@include breakpoint (max-md){
padding: 14px 20px;
}
@include breakpoint (max-sm){
padding: 12px 18px;
}
&::placeholder {
color: $text-color;
}
}
textarea {
padding-bottom: 100px;
resize: none;
border-radius: 40px;
}
}
.theme-btn {
width: 100%;
}
}
}
}

View File

@@ -1,446 +0,0 @@
.preloader {
align-items: center;
cursor: default;
display: flex;
height: 100%;
justify-content: center;
position: fixed;
left: 0;
top: 0;
width: 100%;
z-index: 9999999;
.animation-preloader {
z-index: 1000;
.spinner {
animation: spinner 1s infinite linear;
border-radius: 50%;
border: 3px solid rgba(0, 0, 0, 0.2);
border-top-color: $theme-color;
height: 9em;
margin: 0 auto 3.5em auto;
width: 9em;
@media (max-width: 767px) {
width: 7.5em;
height: 7.5em;
margin: 0 auto 1.5em auto;
}
}
.txt-loading {
font: bold 5em $heading-font, $body-font;
text-align: center;
user-select: none;
@media (max-width: 767px) {
font-size: 2.5em;
}
.letters-loading {
color: $theme-color;
position: relative;
&:nth-child(2):before {
animation-delay: 0.2s;
}
&:nth-child(3):before {
animation-delay: 0.4s;
}
&:nth-child(4):before {
animation-delay: 0.6s;
}
&:nth-child(5):before {
animation-delay: 0.8s;
}
&:nth-child(6):before {
animation-delay: 1s;
}
&:nth-child(7):before {
animation-delay: 1.2s;
}
&:nth-child(8):before {
animation-delay: 1.4s;
}
&::before {
animation: letters-loading 4s infinite;
color: $header-color;
content: attr(data-text-preloader);
left: 0;
opacity: 0;
font-family: $heading-font;
position: absolute;
top: -3px;
transform: rotateY(-90deg);
}
}
}
}
p {
font-size: 15px;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 8px;
color: $theme-color;
}
.loader {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
font-size: 0;
z-index: 1;
pointer-events: none;
.row {
height: 100%;
}
.loader-section {
padding: 0px;
.bg {
background-color: $bg-color;
height: 100%;
left: 0;
width: 100%;
transition: all 800ms cubic-bezier(0.77, 0, 0.175, 1);
}
}
}
&.loaded {
.animation-preloader {
opacity: 0;
transition: 0.3s ease-out;
}
.loader-section {
.bg {
width: 0;
transition: 0.7s 0.3s allcubic-bezier(0.1, 0.1, 0.1, 1);
}
}
}
}
.back-to-top {
background-color: $theme-color;
width: 50px;
height: 50px;
line-height: 40px;
border-radius: 100px;
color: $white;
font-size: 16px;
position: fixed;
display: inline-block;
z-index: 9999;
right: 30px;
bottom: 30px;
@include transition;
opacity: 0;
visibility: hidden;
transform: translateY(20px);
@include breakpoint (max-sm) {
display: none;
}
&:hover {
background-color: $white;
color: $theme-color-2;
}
&.show {
opacity: 1;
visibility: visible;
transform: translate(0);
}
}
.cursor-outer {
-webkit-margin-start: -12px;
margin-inline-start: -12px;
margin-top: -12px;
width: 30px;
height: 30px;
border: 1px solid $theme-color;
background-color: $theme-color;
-webkit-box-sizing: border-box;
box-sizing: border-box;
z-index: 10000000;
opacity: 0.34;
-webkit-transition: all 0.4s ease-out 0s;
transition: all 0.4s ease-out 0s;
}
.cursor-outer.cursor-hover {
opacity: 0.14;
}
.cursor-outer.cursor-big {
opacity: 0;
}
.mouseCursor {
position: fixed;
top: 0;
inset-inline-start: 0;
inset-inline-end: 0;
bottom: 0;
pointer-events: none;
border-radius: 50%;
-webkit-transform: translateZ(0);
transform: translateZ(0);
visibility: hidden;
text-align: center;
}
.mouseCursor.cursor-big {
width: 20px;
height: 20px;
-webkit-margin-start: -12px;
margin-inline-start: -12px;
margin-top: -12px;
}
.cursor-inner {
-webkit-margin-start: -3px;
margin-inline-start: -3px;
margin-top: -3px;
width: 10px;
height: 10px;
z-index: 10000001;
background-color: $theme-color;
opacity: 1;
-webkit-transition: all 0.24s ease-out 0s;
transition: all 0.24s ease-out 0s;
span {
color: $text-color;
line-height: 60px;
opacity: 0;
text-transform: uppercase;
letter-spacing: 1px;
font-size: 12px;
}
}
.cursor-inner.cursor-big {
span {
opacity: 1;
}
}
.cursor-inner.cursor-hover {
-webkit-margin-start: -10px;
margin-inline-start: -10px;
margin-top: -10px;
width: 30px;
height: 30px;
background-color: $theme-color;
border: 1px solid #686363;
opacity: 0;
}
.search-popup {
position: fixed;
width: 100%;
height: 100%;
top: 0;
left: 0;
z-index: -2;
-webkit-transition: all 1s ease;
-khtml-transition: all 1s ease;
-moz-transition: all 1s ease;
-ms-transition: all 1s ease;
-o-transition: all 1s ease;
transition: all 1s ease;
}
.search-popup__overlay {
position: fixed;
width: 224vw;
height: 224vw;
top: calc(90px - 112vw);
right: calc(50% - 112vw);
z-index: 3;
display: block;
-webkit-border-radius: 50%;
-khtml-border-radius: 50%;
-moz-border-radius: 50%;
-ms-border-radius: 50%;
-o-border-radius: 50%;
border-radius: 50%;
-webkit-transform: scale(0);
-khtml-transform: scale(0);
-moz-transform: scale(0);
-ms-transform: scale(0);
-o-transform: scale(0);
transform: scale(0);
-webkit-transform-origin: center;
transform-origin: center;
-webkit-transition: transform 0.8s ease-in-out;
-khtml-transition: transform 0.8s ease-in-out;
-moz-transition: transform 0.8s ease-in-out;
-ms-transition: transform 0.8s ease-in-out;
-o-transition: transform 0.8s ease-in-out;
transition: transform 0.8s ease-in-out;
transition-delay: 0s;
transition-delay: 0.3s;
-webkit-transition-delay: 0.3s;
background-color: #000000;
opacity: 0.7;
cursor: url(../../assets/img/close.png), auto;
}
@media (max-width: 767px) {
.search-popup__overlay {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
transform: none;
width: 100%;
height: 100%;
border-radius: 0;
transform: translateY(-110%);
}
}
.search-popup__content {
position: fixed;
width: 0;
max-width: 560px;
padding: 30px 15px;
left: 50%;
top: 50%;
opacity: 0;
z-index: 3;
-webkit-transform: translate(-50%, -50%);
-khtml-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
-o-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
-webkit-transition: opacity 0.5s 0s, width 0.8s 0.8s cubic-bezier(0.225, 0.01, 0.475, 1.01), transform 0.2s 0s;
-khtml-transition: opacity 0.5s 0s, width 0.8s 0.8s cubic-bezier(0.225, 0.01, 0.475, 1.01), transform 0.2s 0s;
-moz-transition: opacity 0.5s 0s, width 0.8s 0.8s cubic-bezier(0.225, 0.01, 0.475, 1.01), transform 0.2s 0s;
-ms-transition: opacity 0.5s 0s, width 0.8s 0.8s cubic-bezier(0.225, 0.01, 0.475, 1.01), transform 0.2s 0s;
-o-transition: opacity 0.5s 0s, width 0.8s 0.8s cubic-bezier(0.225, 0.01, 0.475, 1.01), transform 0.2s 0s;
transition: opacity 0.5s 0s, width 0.8s 0.8s cubic-bezier(0.225, 0.01, 0.475, 1.01), transform 0.2s 0s;
transition-delay: 0s, 0.8s, 0s;
transition-delay: 0s, 0.4s, 0s;
transition-delay: 0.2s;
-webkit-transition-delay: 0.2s;
}
.search-popup__form {
position: relative;
}
.search-popup__form input[type=search],
.search-popup__form input[type=text] {
width: 100%;
height: 66px;
border: none;
outline: none;
padding-left: 20px;
background-color: $white;
font-size: 16px;
font-weight: 400;
color: $text-color;
transition: all 500ms ease;
}
.search-popup__form input[type=search]:focus,
.search-popup__form input[type=text]:focus {
color: $header-color;
}
.search-popup__form .search-btn {
padding: 0;
width: 66px;
height: 66px;
display: flex;
justify-content: center;
align-items: center;
position: absolute;
top: 0;
right: -1px;
border-radius: 0;
font-size: 20px;
color: $white;
background-color: $theme-color;
@include transition;
&:hover {
background-color: $black;
}
}
.search-popup__form .eolexi-btn svg {
width: 1em;
height: 1em;
fill: currentColor;
}
.search-popup.active {
z-index: 9999;
}
.search-popup.active .search-popup__overlay {
top: auto;
bottom: calc(90px - 112vw);
-webkit-transform: scale(1);
-khtml-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1);
transition-delay: 0s;
-webkit-transition-delay: 0s;
opacity: 0.7;
-webkit-transition: transform 1.6s cubic-bezier(0.4, 0, 0, 1);
-khtml-transition: transform 1.6s cubic-bezier(0.4, 0, 0, 1);
-moz-transition: transform 1.6s cubic-bezier(0.4, 0, 0, 1);
-ms-transition: transform 1.6s cubic-bezier(0.4, 0, 0, 1);
-o-transition: transform 1.6s cubic-bezier(0.4, 0, 0, 1);
transition: transform 1.6s cubic-bezier(0.4, 0, 0, 1);
}
@media (max-width: 767px) {
.search-popup.active .search-popup__overlay {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
transform: none;
width: 100%;
height: 100%;
border-radius: 0;
transform: translateY(0%);
}
}
.search-popup.active .search-popup__content {
width: 100%;
opacity: 1;
transition-delay: 0.7s;
-webkit-transition-delay: 0.7s;
}

View File

@@ -1,309 +0,0 @@
/* Pricing Section */
.pricing-wrapper-2 {
.pricing-content {
position: relative;
z-index: 9;
.pricing-text {
margin-top: 25px;
max-width: 548px;
}
.nav {
background-color: $white;
border-radius: 24.5px;
padding: 10px 20px;
margin-top: 40px;
border: none;
@include breakpoint (max-xxl) {
margin-top: 15px;
}
.nav-tabs {
border-bottom: 0;
display: flex;
}
.nav-link {
font-size: 16px;
font-weight: 700;
text-transform: uppercase;
border: 0;
border-radius: 0;
padding: 0 40px;
position: relative;
background: transparent;
z-index: 2;
color: $text-color;
margin-bottom: 0;
&::before {
content: "";
position: absolute;
right: 0;
top: 50%;
transform: translateY(-50%) translateX(50%);
background: $theme-color;
width: 43px;
height: 22px;
border-radius: 20px;
}
&::after {
content: "";
position: absolute;
right: -18px;
top: 50%;
transform: translateY(-50%);
width: 17px;
height: 17px;
border-radius: 50%;
background: $white;
z-index: 1;
}
&:first-child {
padding-left: 0;
}
&:last-child {
padding-right: 0;
&::after,
&::before {
display: none;
}
}
&.active {
color: $theme-color-2;
&::after {
right: 0;
}
}
}
}
}
.pricing-right-items {
display: flex;
align-items: center;
.pricing-box-items {
max-width: 417px;
width: 100%;
border-radius: 20px;
background: $header-color;
padding: 40px;
@include breakpoint (max-xxl) {
padding: 30px;
}
@include breakpoint (max-sm) {
padding: 25px;
}
.pricing-header {
position: relative;
border-bottom: 1px solid rgba(255, 255, 255, 0.2);
padding-bottom: 35px;
position: relative;
z-index: 9;
margin-bottom: 32px;
.sub-texts {
top: 40px;
right: 0;
position: absolute;
font-size: 24px;
font-weight: 700;
color: $white;
@include breakpoint (max-sm) {
font-size: 20px;
}
}
h2 {
font-size: 72px;
font-weight: 700;
line-height: 1;
color: $white;
@include breakpoint (max-sm) {
font-size: 50px;
}
sup {
font-size: 32px;
font-weight: 700;
top: -1.5em;
margin-right: -10px;
@include breakpoint (max-sm) {
top: -0.5em;
}
}
sub {
font-size: 20px;
font-weight: 600;
// text-transform: capitalize;
margin-left: -10px;
}
}
}
.theme-btn {
background: $theme-color;
color: $white;
border: none;
@include flex;
justify-content: space-between;
i {
background-color: $white;
color: $header-color;
}
&:hover {
background-color: $white;
color: $header-color;
i {
background-color: $theme-color;
color: $white;
}
}
}
ul {
margin-top: 24px;
li {
color: $white;
&:not(:last-child) {
margin-bottom: 15px;
}
@include breakpoint (max-sm) {
font-size: 14px;
}
i {
color: $theme-color-2;
margin-right: 8px;
@include breakpoint (max-sm) {
margin-right: 5px;
}
}
}
}
&.style-2 {
margin-left: -32%;
z-index: -1;
border-radius: 20px;
background: $white;
@media (max-width: 767px) {
margin-left: -70%;
}
.pricing-header {
.sub-texts {
color: $header-color;
}
}
.theme-btn {
width: 100%;
background-color: transparent;
border: 1px solid rgba(203, 204, 207, 0.24);
color: $header-color;
i {
background-color: $theme-color;
color: $white;
}
}
ul {
li {
color: $text-color;
}
}
}
&::after {
display: none;
}
}
}
}
.pricing-card-items-3 {
border-radius: 16px;
background-color: $white;
backdrop-filter: blur(24px);
padding: 40px 48px;
margin-top: 30px;
@include transition;
@include breakpoint (max-xl) {
padding: 30px;
}
.pricing-header {
border-bottom: 1px solid rgba(203, 204, 207, 0.24);
padding-bottom: 16px;
margin-bottom: 24px;
h6 {
text-transform: uppercase;
font-weight: 500;
margin-bottom: 10px;
}
h2 {
color: $theme-color-2;
}
}
.pricing-list-box {
padding: 24px;
background-color: $bg-color;
margin-bottom: 30px;
border-radius: 16px;
li {
color: $header-color;
&:not(:last-child) {
margin-bottom: 15px;
}
i {
color: $theme-color-2;
margin-right: 12px;
}
}
}
.theme-btn {
width: 100%;
@include flex;
justify-content: space-between;
}
&:hover {
transform: translateY(-10px);
}
}

View File

@@ -1,126 +0,0 @@
//>>>>> Section Title Start <<<<<//
.section-title {
position: relative;
z-index: 99;
margin-bottom: 30px;
@include breakpoint (max-md){
margin-bottom: 0;
}
.sub-title {
font-size: 18px;
font-weight: 500;
color: $theme-color-2;
font-family: $heading-font;
margin-bottom: 20px;
// text-transform: capitalize;
line-height: 1;
padding: 8px 16px;
border-radius: 100px;
display: inline-block;
position: relative;
background-color: $bg-color;
&.bg-2 {
background-color: $bg-color-2;
color: $white;
}
}
.sub-title-2 {
color: $theme-color-2;
text-transform: uppercase;
font-size: 18px;
font-weight: 500;
font-family: $heading-font;
margin-bottom: 20px;
display: inline-block;
&.theme {
color: $theme-color;
}
}
h2 {
text-transform: uppercase;
span {
text-transform: uppercase;
color: $theme-color;
}
}
}
.section-title-area {
@include flex;
justify-content: space-between;
position: relative;
z-index: 9;
margin-bottom: 30px;
.section-title {
margin-bottom: 0;
}
@include breakpoint (max-lg) {
flex-wrap: wrap;
// justify-content: center;
// text-align: center;
gap: 30px;
}
@include breakpoint (max-md){
margin-bottom: 0;
}
p {
max-width: 523px;
}
}
//>>>>> Section Title End <<<<<//
//>>>>> Basic Css Start <<<<<//
.center {
text-align: center;
margin: 0 auto;
}
.section-bg {
background-color: $bg-color-2;
}
.section-bg-1 {
background-color: $bg-color;
}
.section-bg-2 {
background-color: #F7F7F7;
}
.header-bg {
background-color: $header-color;
}
.footer-bg-2 {
background-color: #151A26;
}
.section-padding {
padding: 120px 0;
@include breakpoint(max-xl){
padding: 100px 0;
}
@include breakpoint(max-lg){
padding: 80px 0;
}
}
//>>>>> Basic Css End <<<<<//

View File

@@ -1,673 +0,0 @@
.service-wrapper {
border-radius: 16px;
@include transition;
padding: 30px 0;
&.active {
@include breakpoint (max-xxl) {
margin-top: 30px;
}
}
.service-item {
@include flex;
justify-content: space-between;
position: relative;
@include breakpoint (max-xxxl) {
flex-wrap: wrap;
gap: 30px;
}
.image-hover {
width: 324px;
height: 196px;
position: absolute;
top: 50%;
inset-inline-start: 0;
background-size: cover;
background-repeat: no-repeat;
background-position-x: 75%;
opacity: 0;
transition: opacity 0.3s, transform 0.4s ease-out;
overflow: hidden;
pointer-events: none;
z-index: 2;
visibility: hidden;
border-radius: 10px;
}
.left-item {
@include flex;
gap: 100px;
@include breakpoint (max-xxxl) {
gap: 30px;
}
.number {
font-size: 20px;
font-weight: 700;
}
h3 {
a {
background-position: 0 95%;
background-repeat: no-repeat;
background-size: 0% 2px;
display: inline;
&:hover {
color: $theme-color;
background-size: 100% 2px;
background-image: linear-gradient(180deg, $theme-color 0%, $theme-color 100%);
}
}
}
}
.right-item {
@include flex;
position: relative;
p {
max-width: 503px;
}
.service-btn {
font-weight: 500;
color: $theme-color;
font-family: $heading-font;
// text-transform: capitalize;
opacity: 0;
visibility: hidden;
transition: all 0.3s ease;
@include transition;
position: absolute;
top: 50%;
transform: translateY(-50%);
right: 0;
opacity: 0;
@include breakpoint (max-sm) {
display: none;
}
i {
margin-left: 5px;
}
}
}
}
&:hover {
background-color: $bg-color;
.service-item {
.image-hover {
opacity: 1;
visibility: visible;
}
.right-item {
align-items: center;
p {
margin-right: 80px;
@include breakpoint (max-sm) {
margin-right: 0;
}
}
.service-btn {
opacity: 1;
visibility: visible;
}
}
}
}
}
.service-wrapper-2 {
border-radius: 16px;
border: 1px solid rgba(203, 204, 207, 0.24);
margin-top: 48px;
.service-box-item {
border-right: 1px solid rgba(203, 204, 207, 0.24);
padding: 30px;
position: relative;
height: 100%;
overflow: hidden;
&::before {
@include before;
background: $white;
z-index: 3;
transition: all 0.3s ease-out;
}
.service-image {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
overflow: hidden;
transition: all 0.1s ease-out;
img {
@include imgw;
object-fit: cover;
object-position: center center;
}
&::after {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(0deg, rgba(21, 26, 38, 0.80) 0%, rgba(21, 26, 38, 0.80) 100%);
}
}
h2 {
font-size: 56px;
-webkit-text-stroke-width: 1px;
-webkit-text-stroke-color: $text-color;
color: transparent;
margin-bottom: 190px;
z-index: 999;
position: relative;
}
h3 {
z-index: 999;
position: relative;
a {
background-position: 0 95%;
background-repeat: no-repeat;
background-size: 0% 2px;
display: inline;
color: $header-color;
&:hover {
color: $theme-color;
background-size: 100% 2px;
background-image: linear-gradient(180deg, $theme-color 0%, $theme-color 100%);
}
}
}
&:hover {
border: none;
&::before {
transform: translate(100%,-100%);
}
h2 {
color: $theme-color !important;
-webkit-text-stroke: initial !important;
z-index: 999;
position: relative;
}
h3 {
z-index: 999;
position: relative;
a {
color: $white;
}
}
.service-image {
opacity: 1;
}
}
}
}
.service-section-2 {
position: relative;
z-index: 9;
.service-wrapper-2 {
.swiper-slide.swiper-slide-active {
.service-box-item {
border: 1px transparent;
&::before {
background: none;
}
.service-image {
opacity: 1;
}
h2 {
color: $theme-color !important;
-webkit-text-stroke: initial !important;
z-index: 999;
position: relative;
}
h3 {
z-index: 999;
position: relative;
a {
color: $white;
}
}
}
}
}
.service-bottom {
@include flex;
justify-content: space-between;
margin-top: 40px;
@include breakpoint (max-xxl){
display: none;
}
.service-pagi-items {
.service-dot {
.swiper-pagination-bullet {
width: 340px;
height: 2px;
border-radius: 0;
background: $border-color-2;
opacity: 1;
transition: 0.6s;
margin: 0 !important;
}
.swiper-pagination-bullet-active {
opacity: 1;
background: $theme-color;
width: 124px;
}
@include breakpoint (max-md){
display: none;
}
}
}
.array-buttons-3 {
@include flex;
gap: 24px;
@include breakpoint (max-sm) {
display: none;
}
.array-prev {
width: 48px;
height: 48px;
line-height: 48px;
text-align: center;
background-color: $bg-color;
color: $header-color;
@include transition;
z-index: 999;
border-radius: 100px;
transform: rotate(320deg);
&:hover {
background-color: $theme-color;
color: $white;
}
}
.array-next {
width: 48px;
height: 48px;
line-height: 48px;
text-align: center;
background-color: $theme-color;
color: $white;
@include transition;
z-index: 999;
border-radius: 100px;
transform: rotate(320deg);
border: 1px solid $theme-color;
&:hover {
background-color: $bg-color;
color: $header-color;
border: 1px solid $bg-color;
}
}
}
}
}
.service-main-item-3 {
@include flex;
justify-content: space-between;
border-radius: 16px;
background-color: $white;
padding: 16px 0px 16px 16px;
margin-top: 24px;
@include breakpoint (max-xxl) {
flex-wrap: wrap;
gap: 30px;
}
.service-left {
@include flex;
gap: 48px;
@include breakpoint (max-xxl) {
gap: 30px;
}
@include breakpoint (max-md) {
flex-wrap: wrap;
gap: 30px;
}
.service-image {
img {
@include imgw;
border-radius: 16px;
}
}
.content {
h3 {
a {
background-position: 0 95%;
background-repeat: no-repeat;
background-size: 0% 2px;
display: inline;
&:hover {
color: $theme-color;
background-size: 100% 2px;
background-image: linear-gradient(180deg, $theme-color 0%, $theme-color 100%);
}
}
}
p {
max-width: 566px;
margin-top: 15px;
}
}
}
.service-button {
transform: rotate(90deg);
margin-right: -15px;
@include breakpoint (max-xxl) {
margin-right: 0;
transform: rotate(0);
}
}
&.style-2 {
padding: 16px 16px 16px 16px;
.service-left {
.content {
text-align: right;
@include breakpoint (max-xxl) {
text-align: left;
}
}
}
.service-button {
margin-left: -15px;
margin-right: 0;
@include breakpoint (max-xxl) {
margin-left: 0;
}
}
}
}
.service-visa-wrapper {
@include flex;
justify-content: space-between;
@include breakpoint (max-xxl) {
border: 1px solid rgba(202, 210, 210, 0.8);
}
@include breakpoint (max-lg) {
flex-wrap: wrap;
}
.service-visa-items {
padding: 48px 48px 48px 40px;
border-top: 1px solid rgba(202, 210, 210, 0.8);
position: relative;
@include breakpoint (max-xxl) {
padding: 30px 30px 30px 30px;
border-top: none;
}
.top-item {
@include flex;
gap: 16px;
margin-bottom: 16px;
.number {
width: 64px;
height: 64px;
line-height: 64px;
text-align: center;
border-radius: 100px;
background-color: $bg-color;
}
h3 {
a {
background-position: 0 95%;
background-repeat: no-repeat;
background-size: 0% 2px;
display: inline;
&:hover {
color: $theme-color;
background-size: 100% 2px;
background-image: linear-gradient(180deg, $theme-color 0%, $theme-color 100%);
}
}
}
}
.service-button {
position: absolute;
top: 90px;
right: -89px;
bottom: 0;
color: $white;
background-color: $theme-color;
transform: rotate(90deg);
padding: 10px 12px;
height: 45px;
width: 224px;
text-align: center;
opacity: 0;
visibility: hidden;
@include transition;
@include breakpoint (max-xxl) {
display: none;
}
}
&.style-2 {
border-left: 1px solid rgba(202, 210, 210, 0.8);
}
&:hover {
.service-button {
opacity: 1;
visibility: visible;
}
}
}
}
.service-details-wrapper {
.service-details-post {
.details-image {
margin-top: 24px;
margin-bottom: 30px;
img {
@include imgw;
border-radius: 24px;
}
}
.text {
font-size: 32px;
@include breakpoint (max-xxl) {
font-size: 25px;
}
}
.service-left-content {
.list-item {
margin-top: 24px;
li {
i {
color: $theme-color-2;
margin-right: 6px;
}
span {
font-size: 20px;
font-weight: 500;
color: $header-color;
font-family: $heading-font;
@include breakpoint (max-xxl) {
font-size: 16px;
}
}
&:not(:last-child) {
margin-bottom: 16px;
}
}
}
}
.thumb {
img {
@include imgw;
border-radius: 24px;
}
}
.faq-items {
position: relative;
z-index: 9;
.accordion {
.accordion-item {
border: none;
h5 {
button {
line-height: 1;
font-weight: 600;
padding: 29px 30px;
color: $header-color;
cursor: pointer;
@include breakpoint(max-sm) {
font-size: 18px;
line-height: 1.6;
padding: 22px 20px;
}
}
}
.accordion-body {
padding: 20px 30px;
background-color: $white;
box-shadow: 8px 8px 32px 0 rgba(0, 72, 180, 0.08);
backdrop-filter: blur(5px);
p {
font-size: 16px;
line-height: 24px;
font-weight: 400;
@include breakpoint(max-sm) {
width: 100%;
font-size: 14px;
line-height: 28px;
}
}
}
}
.accordion-button {
background-color: $white;
color: $header-color;
box-shadow: 8px 8px 32px 0 rgba(36, 12, 135, 0.08);
backdrop-filter: blur(5px);
&::after {
content: "\f324";
font-family: "Font Awesome 6 Pro";
background: transparent;
font-weight: 900;
transition: all 0.3s ease-in-out !important;
color: $theme-color-2;
}
&:not(.collapsed) {
background-color: $white;
box-shadow: 8px 8px 32px 0 rgba(36, 12, 135, 0.08);
backdrop-filter: blur(5px);
color: $header-color;
&::after {
content: "\f322";
font-family: "Font Awesome 6 Pro";
background: transparent;
font-weight: 900;
color: $theme-color;
transform: rotate(0);
}
}
}
}
}
}
}

View File

@@ -1,370 +0,0 @@
.testimonial-wrapper {
margin-top: 60px;
.testimonia-image {
position: relative;
height: 370px;
overflow: hidden;
border-radius: 16px;
@include breakpoint (max-lg) {
height: initial;
}
.video-btn {
width: 64px;
height: 64px;
line-height: 64px;
border-radius: 100px;
text-align: center;
background-color: $theme-color;
color: $white;
display: inline-block;
position: absolute;
left: 35px;
top: 30px;
z-index: 9;
&::before {
@include before;
border-radius: 1000px;
border: 1px solid rgba(203, 204, 207, 0.24);
width: 80px;
height: 80px;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
}
}
h5 {
font-weight: 500;
color: $white;
position: absolute;
left: 24px;
bottom: 24px;
z-index: 9;
}
img {
@include imgw;
border-radius: 16px;
object-fit: cover;
}
&::after {
content: "";
position: absolute;
width: 200%;
height: 0%;
left: 50%;
top: 50%;
background-color: rgba(255,255,255,.3);
transform: translate(-50%,-50%) rotate(-45deg);
z-index: 1;
}
&:hover {
&::after {
height: 250%;
transition: all 600ms linear;
background-color: transparent;
}
}
}
.testimonial-box {
border-radius: 16px;
background-color: $bg-color;
padding: 30px 24px;
.star {
color: $theme-color;
margin-bottom: 24px;
}
p {
font-style: italic;
font-weight: 500;
max-width: 307px;
}
.info-item {
@include flex;
gap: 12px;
margin-top: 90px;
@include breakpoint (max-xxl) {
margin-top: 40px;
}
@include breakpoint (max-lg) {
margin-top: 30px;
}
.client-image {
img {
border-radius: 100%;
}
}
}
}
}
.testimonial-wrapper-2 {
margin-top: 60px;
@include breakpoint (max-sm) {
margin-top: 30px;
}
.testimonial-image {
height: 305px;
img {
@include imgw;
border-radius: 16px;
object-fit: cover;
}
}
.testimonial-item {
@include flex;
gap: 30px;
@include breakpoint (max-xxl) {
flex-wrap: wrap;
}
.testimonial-left {
@include transition;
.testimonial-box {
padding: 40px;
background-color: $theme-color-2;
border-radius: 16px;
position: relative;
@include transition;
@include breakpoint (max-xxl) {
padding: 30px;
}
&::before {
position: absolute;
bottom: -23px;
content: "";
left: 32px;
width: 35px;
height: 24px;
background-color: $theme-color-2;
clip-path: polygon(100% 0, 0 0, 100% 100%);
}
.star {
color: $white;
margin-bottom: 10px;
}
p {
max-width: 549px;
font-size: 20px;
font-weight: 500;
font-family: $heading-font;
color: $white;
line-height: 140%;
@include breakpoint (max-xxl) {
font-size: 16px;
}
}
}
.info-item {
@include flex;
gap: 10px;
margin-top: 24px;
margin-left: 80px;
img {
border: 1px solid $theme-color;
border-radius: 100%;
}
.content {
h5 {
font-weight: 500;
}
}
}
}
.right-item {
width: 100px;
.test-slider {
height: 300px;
@include breakpoint (max-xxl) {
height: 80px;
}
}
.client-image {
img {
border-radius: 8px;
transition: all 0.5s ease;
}
}
}
}
}
.testimonial-wrapper-3 {
margin-top: 60px;
.testimonial-thumb {
border-radius: 16px;
img {
@include imgw;
border-radius: 16px;
}
&.tp-clip-anim {
width: 100%;
display: grid;
align-items: center;
justify-items: center;
overflow: hidden;
position: relative;
& .tp-anim-img {
opacity: 0;
width: 100%;
height: 100%;
}
& .mask {
background-size: cover;
background-position: center;
transform: scale(1.005);
}
>* {
grid-area: 1 / 1 / 2 / 2;
width: 100%;
height: 100%;
max-height: 100%;
}
}
}
.testimonial-content {
margin-left: 50px;
position: relative;
@include breakpoint (max-xxl) {
margin-left: 0;
}
.content {
.star {
color: $theme-color;
margin-bottom: 20px;
}
h3 {
font-size: 28px;
line-height: 143%;
border-bottom: 1px solid rgba(203, 204, 207, 0.24);
padding-bottom: 40px;
margin-bottom: 30px;
font-weight: 500;
@include breakpoint (max-xxl) {
font-size: 24px;
}
@include breakpoint (max-lg) {
font-size: 20px;
}
@include breakpoint (max-sm) {
font-size: 16px;
}
}
.info-item {
@include flex;
gap: 20px;
.icon {
width: 56px;
height: 56px;
line-height: 56px;
text-align: center;
border-radius: 100px;
background-color: $theme-color-2;
color: $white;
font-size: 30px;
}
.content {
border-left: 1px solid rgba(203, 204, 207, 0.24);
padding-left: 30px;
}
}
}
.array-buttons-3 {
position: absolute;
right: 0;
bottom: 0;
@include flex;
gap: 24px;
@include breakpoint (max-sm) {
display: none;
}
.array-prev {
width: 48px;
height: 48px;
line-height: 48px;
text-align: center;
background-color: $bg-color;
color: $header-color;
@include transition;
z-index: 999;
border-radius: 100px;
transform: rotate(320deg);
&:hover {
background-color: $theme-color;
color: $white;
}
}
.array-next {
width: 48px;
height: 48px;
line-height: 48px;
text-align: center;
background-color: $theme-color;
color: $white;
@include transition;
z-index: 999;
border-radius: 100px;
transform: rotate(320deg);
border: 1px solid $theme-color;
&:hover {
background-color: $bg-color;
color: $header-color;
border: 1px solid $bg-color;
}
}
}
}
}

View File

@@ -1,174 +0,0 @@
/* --------------------------------------------
Template Default Fonts & Fonts Styles
---------------------------------------------- */
@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300..700&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap');
$heading-font: 'Space Grotesk', serif;
$body-font: "Inter", sans-serif;
//font-family: "Font Awesome 6 Free";
$fa: "Font Awesome 6 Pro";
body {
font-family: $body-font;
font-size: 16px;
font-weight: 400;
line-height: 24px;
color: $text-color;
background-color: $white;
padding: 0;
margin: 0;
overflow-x: hidden;
// // text-transform: capitalize;
}
ul {
padding: 0;
margin: 0;
list-style: none;
}
button {
border: none;
background-color: transparent;
padding: 0;
}
input:focus{
color: $white;
outline: none;
}
input{
color: $white;
}
h1,
h2,
h3,
h4,
h5,
h6 {
font-family: $heading-font;
margin: 0px;
padding: 0;
color: $header-color;
@include transition;
// text-transform: capitalize;
}
h1 {
font-size: 72px;
font-weight: 700;
line-height: 111%;
@include breakpoint(max-xl4){
font-size: 70px;
}
@include breakpoint(max-xxxl){
font-size: 60px;
}
@include breakpoint(max-xxl){
font-size: 55px;
}
@include breakpoint(max-xl){
font-size: 40px;
}
@include breakpoint(max-lg){
font-size: 40px;
}
@include breakpoint(max-md){
font-size: 32px;
}
@include breakpoint(max-sm){
font-size: 28px;
}
}
h2 {
font-size: 48px;
font-weight: 700;
line-height: 117%;
@include breakpoint(max-xxl){
font-size: 50px;
}
@include breakpoint(max-xl){
font-size: 38px;
}
@include breakpoint(max-lg){
font-size: 38px;
}
@include breakpoint(max-md){
font-size: 35px;
}
@include breakpoint(max-sm){
font-size: 30px;
}
@include breakpoint(max-xxs){
font-size: 25px;
}
}
h3 {
font-size: 24px;
font-weight: 700;
line-height: 133%;
@include breakpoint(max-xl){
font-size: 20px;
}
}
h4 {
font-size: 22px;
font-weight: 700;
line-height: 141%;
@include breakpoint(max-xl){
font-size: 20px;
}
}
h5 {
font-size: 20px;
font-weight: 700;
line-height: 140%;
}
h6 {
font-size: 16px;
font-weight: 600;
}
a {
text-decoration: none;
outline: none !important;
cursor: pointer;
color: $header-color;
@include transition;
}
p {
margin: 0px;
@include transition;
}
span {
margin: 0px;
// @include transition;
}

View File

@@ -1,31 +0,0 @@
:root {
--body: #fff;
--black: #000;
--white: #fff;
--theme: #E13833;
--theme-2: #0048B4;
--header: #151A26;
--text: #535761;
--text-2: #0B4E3D;
--border: #C9C9C9;
--border-2: #CBCCCF;
--bg: #F8F8F9;
--bg-2: #153888;
--box-shadow: 0px 1px 14px 0px rgba(0, 0, 0, 0.13);
}
// Theme Color - Defualt Colors
$black: var(--black);
$white: var(--white);
$theme-color: var(--theme);
$theme-color-2: var(--theme-2);
$text-color: var(--text);
$text-color-2: var(--text-2);
$header-color: var(--header);
$border-color: var(--border);
$border-color-2: var(--border-2);
$bg-color: var(--bg);
$bg-color-2: var(--bg-2);
$shadow: var(--pp-box-shadow);

View File

@@ -1,565 +0,0 @@
.visa-certification-wrapper {
.visa-image {
margin-left: -310px;
@include breakpoint (max-xxl) {
margin-left: 0;
}
img {
@include imgw;
}
}
.visa-certification-content {
margin-left: 17px;
@include breakpoint (max-xxl) {
margin-left: 0;
margin-bottom: 100px;
margin-top: 100px;
}
@include breakpoint (max-lg) {
margin-bottom: 80px;
margin-top: 0;
}
.visa-item {
@include flex;
gap: 48px;
margin-top: 90px;
@include breakpoint (max-xxl) {
margin-top: 30px;
gap: 30px;
}
@include breakpoint (max-lg) {
flex-wrap: wrap;
gap: 30px;
}
.nav {
display: grid;
gap: 30px;
li {
font-size: 20px;
font-weight: 700;
font-family: $heading-font;
@include breakpoint (max-xxl) {
font-size: 12px;
}
@include breakpoint (max-lg) {
font-size: 16px;
}
.nav-link {
color: $header-color;
@include transition;
padding: 16px 40px 16px 16px;
border-radius: 8px;
backdrop-filter: blur(28px);
background-color: $white;
line-height: 1;
@include breakpoint (max-xxl) {
padding: 10px 10px 10px 10px;
}
@include breakpoint (max-lg) {
padding: 16px 40px 16px 16px;
}
i {
width: 24px;
height: 24px;
line-height: 24px;
text-align: center;
background-color: $theme-color;
color: $white;
border-radius: 50px;
font-size: 14px;
transform: rotate(-45deg);
margin-right: 6px;
}
&.active {
position: relative;
background-color: $theme-color;
color: $white;
border-radius: 100px;
i {
background-color: $white;
color: $theme-color;
}
}
}
}
}
.content {
.icon {
margin-bottom: 16px;
}
p {
max-width: 479px;
margin-bottom: 40px;
margin-top: 10px;
}
}
}
}
}
.visa-provide-box {
background-color: $white;
padding: 30px;
border-radius: 16px;
background-color: $white;
margin-top: 30px;
.visa-top-item {
margin-bottom: 30px;
@include flex;
justify-content: space-between;
@include breakpoint (max-xxl) {
flex-wrap: wrap;
gap: 20px;
}
.visa-left {
@include flex;
gap: 16px;
p {
color: $theme-color;
}
h3 {
a {
background-position: 0 95%;
background-repeat: no-repeat;
background-size: 0% 2px;
display: inline;
&:hover {
color: $theme-color;
background-size: 100% 2px;
background-image: linear-gradient(180deg, $theme-color 0%, $theme-color 100%);
}
}
}
}
.theme-btn {
background-color: $bg-color;
&:hover {
background-color: $theme-color;
color: $white;
}
}
}
.visa-list-item {
@include flex;
justify-content: space-between;
@include breakpoint (max-xxl) {
flex-wrap: wrap;
gap: 20px;
}
.list {
li {
font-size: 18px;
font-weight: 500;
font-family: $heading-font;
@include breakpoint (max-xxxl) {
font-size: 16px;
}
&:not(:last-child) {
margin-bottom: 20px;
}
i {
width: 22px;
height: 22px;
line-height: 22px;
text-align: center;
border-radius: 50px;
background-color: $text-color;
color: $white;
margin-right: 8px;
font-size: 12px;
transform: rotate(-45deg);
}
}
}
}
}
.visa-provide-section {
.visa-slider {
margin-left: -400px;
margin-right: -400px;
@include breakpoint (max-xxl) {
margin-right: 0;
margin-left: 0;
margin: 0 10px;
}
}
}
.visa-bottom {
position: relative;
margin-top: 70px;
@include breakpoint (max-xxl) {
display: none;
}
&::before {
background-color: $theme-color-2;
@include before;
width: 410px;
height: 132px;
padding: 16px 16px 16px 294px;
border-radius: 0 100px 100px 0;
@include breakpoint (max-xxxl) {
display: none;
}
}
&::after {
background-color: $theme-color-2;
position: absolute;
content: "";
width: 410px;
height: 132px;
padding: 16px 16px 16px 294px;
border-radius: 100px 0 0 100px;
right: 0;
top: 0;
@include breakpoint (max-xxxl) {
display: none;
}
}
.visa-arrow-item {
@include flex;
justify-content: space-between;
.array-prev {
width: 100px;
height: 100px;
line-height: 100px;
border-radius: 100%;
text-align: center;
background-color: $white;
color: $header-color;
position: relative;
z-index: 9;
margin-top: 16px;
margin-left: -15px;
font-size: 40px;
}
.array-next {
width: 100px;
height: 100px;
line-height: 100px;
border-radius: 100%;
text-align: center;
background-color: $theme-color;
color: $white;
position: relative;
z-index: 9;
margin-top: 16px;
margin-right: -15px;
font-size: 40px;
}
.flag-item {
@include flex;
gap: 24px;
.flag-thumb {
position: relative;
transition: all 0.4s ease-in-out;
width: 120px;
height: 120px;
img {
width: 100%;
height: 100%;
border-radius: 50%;
}
&::before {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
width: 100%;
height: 100%;
content: "";
background-color: rgba(5, 17, 26, 0.8);
border-radius: 50%;
transition: all 0.4s ease-in-out;
opacity: 0;
visibility: hidden;
}
&::after {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
width: 100%;
height: 100%;
content: "";
border: 5px solid $white;
border-radius: 50%;
transition: all 0.4s ease-in-out;
opacity: 0;
visibility: hidden;
}
.country-name {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
text-align: center;
z-index: 2;
transition: all 0.4s ease-in-out;
opacity: 0;
visibility: hidden;
h4 {
font-size: 14px;
font-weight: 800;
// text-transform: capitalize;
text-align: center;
color: $white;
}
}
&:hover {
&::before {
opacity: 1;
visibility: visible;
}
&::after {
opacity: 1;
visibility: visible;
}
.country-name {
opacity: 1;
visibility: visible;
}
}
}
}
}
}
.country-details-wrapper {
.country-details-post {
.details-image {
img {
@include imgw;
border-radius: 24px;
}
}
.country-details-content {
margin-top: 20px;
h2 {
margin-bottom: 10px;
}
h5 {
color: $theme-color-2;
margin-top: 30px;
}
.tourist-visa-box {
border-radius: 16px;
padding: 30px;
background-color: $bg-color;
margin-top: 30px;
margin-bottom: 24px;
.tourist-box {
@include flex;
gap: 50px;
.tourist-content {
h5 {
color: $header-color;
margin-bottom: 5px;
margin-top: 0;
}
}
&.style-2 {
padding-bottom: 15px;
border-bottom: 1px solid rgba(203, 204, 207, 0.7);
margin-bottom: 15px;
}
}
}
.text {
font-size: 32px;
}
.list-item {
margin-top: 20px;
margin-bottom: 30px;
li {
color: $header-color;
font-size: 18px;
font-weight: 500;
font-family: $heading-font;
&:not(:last-child) {
margin-bottom: 15px;
}
span {
font-size: 16px;
font-weight: 400;
color: $text-color;
font-family: $body-font;
}
}
}
.thumb {
img {
@include imgw;
border-radius: 16px;
}
}
.visa-list-2 {
@include flex;
gap: 32px;
margin-bottom: 20px;
li {
font-size: 20px;
font-weight: 500;
color: $header-color;
i {
color: $theme-color-2;
margin-right: 8px;
}
}
}
}
}
.country-details-sideber {
.icon-box-item {
background-color: $bg-color;
border-radius: 8px;
padding: 12px 24px;
@include flex;
justify-content: space-between;
margin-bottom: 8px;
.left-item {
@include flex;
gap: 16px;
}
i {
color: $header-color;
}
}
.visa-contact-box {
border-radius: 24px;
padding: 40px;
margin-top: 30px;
.content {
h3 {
color: $white;
}
p {
color: rgba(255, 255, 255, 0.7);
border-bottom: 1px solid rgba(203, 204, 207, 0.24);
padding-bottom: 16px;
margin-bottom: 24px;
}
.icon-item {
@include flex;
gap: 16px;
margin-bottom: 24px;
.icon {
width: 48px;
height: 48px;
line-height: 48px;
text-align: center;
border-radius: 100px;
background-color: #183074;
color: $white;
}
.cont {
span {
color: rgba(255, 255, 255, 0.7);
}
h6 {
color: $white;
font-size: 18px;
font-weight: 500;
a {
color: $white;
}
}
}
}
}
}
}
}

View File

@@ -1,102 +0,0 @@
/*
Theme Name: Visaway
Author: Gramentheme
Author URI: https://themeforest.net/user/Gramentheme/portfolio
Description: Visaway Immigration & Visa Consulting HTML Template
Service Html Template
Version: 1.0.0
*/
/*CSS Table Of Content Ends Here*/
/*
--------------------------------------------------------------
[Table of Contents]
--------------------------------------------------------------
01. Variables & Mixins
02. Typography
03. Buttons
04. About
05. Animation
06. Brand
07. Contact
08. Cta
09. Faq
10. Feature
11. Footer
12. Header
13. Helping
14. Hero
15. Marquee
16. Meanmenu
17. News
18. Preloader
19. Pricing
20. Section
21. Service
22. Testimonial
23. Visa
--------------------------------------------------------------
*/
//>> Basic Start <<//
//>> Mixins <<//
@import "_mixins";
//>> Variables <<//
@import "_variables";
//>> Buttons <<//
@import "_buttons";
//>> Typography <<//
@import "_typography";
//>> Basic End <<//
//>> Template Section Style Start <<//
//>> About <<//
@import "_about";
//>> Animation <<//
@import "_animation";
//>> Brand <<//
@import "_brand";
//>> Contact <<//
@import "_contact";
//>> Cta <<//
@import "_cta";
//>> Faq <<//
@import "_faq";
//>> Feature <<//
@import "_feature";
//>> Footer <<//
@import "_footer";
//>> Header <<//
@import "_header";
//>> Helping <<//
@import "_helping";
//>> Hero <<//
@import "_hero";
//>> Marquee <<//
@import "_marquee";
//>> MeanMenu <<//
@import "_meanmenu";
//>> News <<//
@import "_news";
//>> _Preloader <<//
@import "_preloader";
//>> _Pricing <<//
@import "_pricing";
//>> Section <<//
@import "_section";
//>> Service <<//
@import "_service";
//>> Testimonial <<//
@import "_testimonial";
//>> Visa <<//
@import "_visa";
//>> Template Section Style End <<//