Files
salmakis/app/components/HeroSplit.module.css

256 lines
4.4 KiB
CSS

.heroContainer {
position: relative;
width: 100vw;
height: 100vh;
overflow: hidden;
background-color: var(--text-dark);
}
.navOverlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
padding: 2rem 4rem;
display: flex;
justify-content: space-between;
align-items: center;
z-index: 100;
color: var(--primary-white);
}
.logo {
font-family: var(--font-heading);
font-size: 1.5rem;
letter-spacing: 0.2em;
text-transform: uppercase;
}
.navLinks {
display: flex;
align-items: center;
gap: 1rem;
}
.langBtn {
background: none;
border: none;
color: var(--primary-white);
font-family: var(--font-text);
font-size: 0.9rem;
cursor: pointer;
opacity: 0.7;
transition: opacity 0.3s ease;
}
.langBtn:hover {
opacity: 1;
}
.divider {
width: 1px;
height: 16px;
background-color: rgba(255, 255, 255, 0.3);
}
.contactIcon {
margin-left: 1rem;
opacity: 0.8;
transition: opacity 0.3s ease;
}
.contactIcon:hover {
opacity: 1;
}
/* Split Pane Layout */
.splitWrapper {
display: flex;
width: 100%;
height: 100%;
}
.splitPane {
flex: 1;
position: relative;
display: flex;
align-items: center;
justify-content: center;
overflow: hidden;
transition: flex 0.6s cubic-bezier(0.25, 1, 0.5, 1);
cursor: pointer;
}
.paneBg {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-size: cover;
background-position: center;
transform: scale(1.05);
transition: transform 10s ease;
filter: grayscale(30%);
overflow: hidden;
}
.videoIfrm {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 100vw;
height: 56.25vw; /* 16:9 aspect ratio target */
min-height: 100vh;
min-width: 177.77vh; /* 16:9 aspect ratio target */
pointer-events: none;
border: none;
}
.videoPlaceholder {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-size: cover;
background-position: center;
z-index: 2;
transition: opacity 0.4s ease;
pointer-events: none;
}
.overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: linear-gradient(to bottom, rgba(0,0,0,0.2) 0%, rgba(0,0,0,0.6) 100%);
transition: background 0.4s ease;
}
.paneContent {
position: relative;
z-index: 10;
text-align: center;
color: var(--primary-white);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
transform: translateY(20px);
transition: transform 0.6s cubic-bezier(0.25, 1, 0.5, 1);
}
.title {
font-size: 3rem;
font-weight: 300;
letter-spacing: 0.1em;
margin-bottom: 0.5rem;
text-shadow: 0 4px 10px rgba(0,0,0,0.3);
}
.subtitle {
font-size: 1rem;
font-weight: 300;
letter-spacing: 0.15em;
text-transform: uppercase;
opacity: 0.8;
margin-bottom: 2rem;
}
.exploreBtn {
background: transparent;
color: var(--primary-white);
border: 1px solid var(--primary-white);
padding: 0.75rem 2rem;
font-size: 0.9rem;
font-family: var(--font-text);
letter-spacing: 0.1em;
cursor: pointer;
opacity: 0;
transform: translateY(10px);
transition: all 0.4s ease;
}
.socialsWrapper {
display: flex;
gap: 1.25rem;
margin-top: 1.5rem;
opacity: 0;
transform: translateY(10px);
transition: all 0.4s ease;
transition-delay: 0.1s; /* appears slightly after the button */
}
.socialLink {
color: var(--primary-white);
transition: color 0.3s ease, transform 0.3s ease;
display: flex;
align-items: center;
justify-content: center;
}
.socialLink:hover {
color: var(--gold);
transform: translateY(-2px);
}
/* Hover States */
.splitWrapper:hover .splitPane {
flex: 0.5;
}
.splitWrapper .splitPane:hover {
flex: 3;
}
.splitPane:hover .videoPlaceholder {
opacity: 0;
}
.splitPane:hover .paneBg {
transform: scale(1.0);
filter: grayscale(0%);
}
.splitPane:hover .overlay {
background: linear-gradient(to bottom, rgba(0,0,0,0.1) 0%, rgba(0,0,0,0.4) 100%);
}
.splitPane:hover .paneContent {
transform: translateY(0);
}
.splitPane:hover .exploreBtn {
opacity: 1;
transform: translateY(0);
background: var(--primary-white);
color: var(--text-dark);
}
.splitPane:hover .socialsWrapper {
opacity: 1;
transform: translateY(0);
}
@media (max-width: 768px) {
.splitWrapper {
flex-direction: column;
}
.splitPane:hover {
flex: 2;
}
.navOverlay {
padding: 1rem 2rem;
}
.title {
font-size: 2rem;
}
}