HTML
Bangsaray Villa Resort – Your Peaceful Thai Escape We’re not just a place to sleep; we’re a sanctuary for your soul. A place to unwind, reconnect with loved ones, and immerse yourself in the authentic rhythm of Thai village life.
Book your perfect holiday today and start your journey to tranquility.
CSS (style.css)CSS/* — Global Styles & Typography — */
:root {
–primary-color: #2F4F4F; /* Dark Slate Gray */
–secondary-color: #a5d6a7; /* Light Green */
–accent-color: #6c8e6d; /* Muted Green */
–text-color: #333;
–light-text-color: #f0f0f0;
–bg-color: #f7f7f7;
–font-heading: ‘Playfair Display’, serif;
–font-body: ‘Montserrat’, sans-serif;
}body {
margin: 0;
font-family: var(–font-body);
color: var(–text-color);
line-height: 1.7;
background-color: var(–bg-color);
overflow-x: hidden;
}h1, h2, h3, h4 {
font-family: var(–font-heading);
font-weight: 700;
margin: 0;
line-height: 1.2;
}h1 { font-size: 4rem; }
h2 { font-size: 2.5rem; }
h3 { font-size: 2rem; }.container {
max-width: 1200px;
margin: 0 auto;
padding: 0 20px;
}.cta-button {
display: inline-block;
padding: 18px 40px;
background-color: var(–accent-color);
color: var(–light-text-color);
text-decoration: none;
font-weight: bold;
border-radius: 5px;
transition: background-color 0.3s ease, transform 0.2s ease;
border: none;
cursor: pointer;
font-size: 1rem;
text-transform: uppercase;
letter-spacing: 1px;
}.cta-button:hover {
background-color: var(–primary-color);
transform: translateY(-2px);
}/* — Hero Section with Dynamic Video — */
.hero {
position: relative;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
text-align: center;
color: var(–light-text-color);
overflow: hidden;
}.hero-video {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
object-fit: cover;
z-index: -2;
}.hero-overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.4);
z-index: -1;
}.hero-content {
z-index: 1;
max-width: 900px;
padding: 20px;
}.hero-subtitle {
font-size: 1.5rem;
font-weight: 300;
margin: 20px 0 40px;
}/* — USP Section with Asymmetric Layout — */
.usp-section {
display: flex;
flex-direction: column;
align-items: center;
padding: 80px 0;
gap: 40px;
}.usp-content {
text-align: center;
max-width: 800px;
}.usp-image-wrapper {
position: relative;
width: 100%;
height: 400px;
overflow: hidden;
border-radius: 10px;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
}.usp-image {
width: 100%;
height: 100%;
object-fit: cover;
transition: transform 0.5s ease;
}.usp-image-wrapper:hover .usp-image {
transform: scale(1.05);
}/* — Key Features Section with Grid — */
.features {
background-color: #f0f5f0;
padding: 80px 0;
}.feature-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 40px;
text-align: center;
}.feature-item {
background-color: #fff;
padding: 40px;
border-radius: 10px;
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.05);
transition: transform 0.3s ease, box-shadow 0.3s ease;
}.feature-item:hover {
transform: translateY(-5px);
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.1);
}.icon-wrapper {
margin-bottom: 20px;
}.icon-wrapper img {
height: 70px;
filter: invert(30%) sepia(85%) saturate(300%) hue-rotate(80deg);
}.feature-item h3 {
color: var(–primary-color);
margin-bottom: 10px;
}/* — Image Gallery with Asymmetric Layout — */
.gallery {
padding: 80px 0;
}.gallery-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-template-rows: repeat(2, 300px);
gap: 20px;
}.gallery-img {
width: 100%;
height: 100%;
object-fit: cover;
border-radius: 10px;
box-shadow: 0 5px 20px rgba(0, 0, 0, 0.1);
transition: transform 0.3s ease;
}.gallery-img:hover {
transform: scale(1.02);
}.gallery-grid img:nth-child(1) { grid-area: 1 / 1 / 2 / 2; }
.gallery-grid img:nth-child(2) { grid-area: 1 / 2 / 2 / 3; }
.gallery-grid img:nth-child(3) { grid-area: 1 / 3 / 3 / 4; }
.gallery-grid img:nth-child(4) { grid-area: 2 / 1 / 3 / 2; }
.gallery-grid img:nth-child(5) { grid-area: 2 / 2 / 3 / 3; }/* — Testimonials Section — */
.testimonials {
background-color: var(–primary-color);
color: var(–light-text-color);
padding: 80px 20px;
text-align: center;
}.testimonial-item {
max-width: 800px;
margin: 40px auto;
font-size: 1.2rem;
font-style: italic;
opacity: 0.8;
}.testimonial-item cite {
display: block;
margin-top: 20px;
font-style: normal;
font-weight: bold;
color: #fff;
}/* — Booking Section — */
.booking-section {
text-align: center;
padding: 80px 20px;
}.booking-form {
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: 20px;
margin-top: 40px;
}.booking-form input {
padding: 15px 20px;
border: 1px solid #ddd;
border-radius: 5px;
font-size: 1rem;
flex: 1;
min-width: 250px;
transition: border-color 0.3s ease;
}.booking-form input:focus {
border-color: var(–accent-color);
outline: none;
}/* — Footer — */
footer {
background-color: #111;
color: #aaa;
text-align: center;
padding: 40px 20px;
font-size: 0.9rem;
}footer a {
color: #fff;
text-decoration: none;
transition: color 0.3s ease;
}footer a:hover {
color: var(–secondary-color);
}/* — Animation Styles — */
.animate-fade-in {
opacity: 0;
transform: translateY(20px);
animation: fadeIn 0.8s forwards;
}.animate-fade-in.delay-200 { animation-delay: 0.2s; }
.animate-fade-in.delay-400 { animation-delay: 0.4s; }@keyframes fadeIn {
to {
opacity: 1;
transform: translateY(0);
}
}.animate-on-scroll {
opacity: 0;
transform: translateY(50px);
transition: opacity 0.6s ease-out, transform 0.6s ease-out;
}.animate-on-scroll.visible {
opacity: 1;
transform: translateY(0);
}/* — Media Queries for Responsiveness — */
@media (max-width: 1024px) {
.gallery-grid {
grid-template-columns: 1fr 1fr;
grid-template-rows: auto;
}
.gallery-grid img:nth-child(3) { grid-area: auto; }
}@media (max-width: 768px) {
h1 { font-size: 2.5rem; }
h2 { font-size: 2rem; }
h3 { font-size: 1.5rem; }.usp-section {
flex-direction: column;
}.booking-form {
flex-direction: column;
}
}