/* ===========================================
   GRAND NARWASTU HOTEL
   Luxury Hotel Theme
=========================================== */

:root{

    --gold:#D4AF37;
    --gold2:#c49a17;
    --black:#111111;
    --dark:#1d1d1d;
    --white:#ffffff;
    --gray:#777777;
    --light:#f8f8f8;

    --shadow:0 15px 40px rgba(0,0,0,.12);

    --radius:15px;

}

*{

margin:0;
padding:0;
box-sizing:border-box;

}

html{

scroll-behavior:smooth;

}

body{

font-family:'Poppins',sans-serif;
background:#fff;
color:#222;
overflow-x:hidden;

}

h1,h2,h3,h4{

font-family:'Cormorant Garamond',serif;

}

img{

width:100%;
display:block;

}

a{

text-decoration:none;

}

section{

padding:90px 8%;

}

/* ===================================
NAVBAR
=================================== */

header{

position:fixed;

top:0;

left:0;

width:100%;

z-index:999;

transition:.4s;

}

.navbar{

display:flex;

justify-content:space-between;

align-items:center;

padding:18px 8%;

transition:.4s;

}

header.scrolled{

background:#fff;

box-shadow:0 5px 25px rgba(0,0,0,.08);

}

.logo img{

height:70px;

}

.menu{

display:flex;

gap:35px;

list-style:none;

}

.menu a{

color:white;

font-weight:500;

transition:.3s;

}

header.scrolled .menu a{

color:#222;

}

.menu a:hover{

color:var(--gold);

}

.book-btn{

padding:14px 28px;

background:var(--gold);

color:#fff;

border-radius:40px;

font-weight:600;

transition:.3s;

}

.book-btn:hover{

background:#111;

}

.hamburger{

display:none;

font-size:30px;

cursor:pointer;

color:white;

}

/* ===================================
HERO
=================================== */

.hero{

height:100vh;

background:url("../images/hero.jpg");

background-size:cover;

background-position:center;

background-attachment:fixed;

display:flex;

align-items:center;

justify-content:center;

position:relative;

}

.hero::before{

content:"";

position:absolute;

width:100%;

height:100%;

background:rgba(0,0,0,.55);

}

.overlay{

position:relative;

z-index:2;

text-align:center;

color:white;

max-width:800px;

padding:20px;

}

.overlay h4{

letter-spacing:6px;

font-size:18px;

margin-bottom:15px;

}

.overlay h1{

font-size:70px;

margin-bottom:15px;

}

.overlay p{

font-size:22px;

margin-bottom:40px;

}

.hero-btn{

padding:18px 45px;

background:var(--gold);

border-radius:40px;

color:white;

font-size:18px;

transition:.4s;

}

.hero-btn:hover{

background:white;

color:black;

}

/* ===================================
BOOKING
=================================== */

.booking-box{

background:white;

margin-top:-80px;

position:relative;

z-index:20;

padding:35px;

border-radius:20px;

box-shadow:var(--shadow);

}

.booking-box h2{

margin-bottom:25px;

text-align:center;

font-size:40px;

}

.booking-box form{

display:grid;

grid-template-columns:repeat(5,1fr);

gap:20px;

}

.booking-box input,
.booking-box select{

padding:15px;

border:1px solid #ddd;

border-radius:10px;

font-size:16px;

}

.booking-box button{

background:var(--gold);

border:none;

color:white;

font-size:16px;

border-radius:10px;

cursor:pointer;

transition:.3s;

}

.booking-box button:hover{

background:#111;

}

/* ===================================
ABOUT
=================================== */

.container{

display:grid;

grid-template-columns:1fr 1fr;

gap:60px;

align-items:center;

}

.about-image img{

border-radius:20px;

box-shadow:var(--shadow);

}

.about-text h2{

font-size:55px;

margin-bottom:20px;

}

.about-text p{

line-height:2;

color:#555;

}

/* ===================================
ROOM
=================================== */

#rooms{

background:#f8f8f8;

}

#rooms h2{

text-align:center;

font-size:50px;

margin-bottom:60px;

}

.room-wrapper{

display:grid;

grid-template-columns:repeat(auto-fit,minmax(330px,1fr));

gap:35px;

}

.room-card{

background:white;

border-radius:20px;

overflow:hidden;

box-shadow:var(--shadow);

transition:.4s;

}

.room-card:hover{

transform:translateY(-12px);

}

.room-card img{

height:250px;

object-fit:cover;

}

.room-card h3{

padding:20px 20px 5px;

font-size:32px;

}

.room-card h4{

padding:0 20px;

color:var(--gold2);

}

.room-card button{

margin:20px;

padding:14px 30px;

border:none;

background:var(--gold);

color:white;

border-radius:40px;

cursor:pointer;

}

/* ===================================
FACILITY
=================================== */

#facility{

background:white;

}

#facility h2{

text-align:center;

font-size:50px;

margin-bottom:60px;

}

.facility-grid{

display:grid;

grid-template-columns:repeat(auto-fit,minmax(220px,1fr));

gap:30px;

}

.facility-grid div{

background:#fff;

padding:40px;

border-radius:20px;

box-shadow:var(--shadow);

text-align:center;

transition:.4s;

}

.facility-grid div:hover{

background:var(--gold);

color:white;

transform:translateY(-10px);

}

.facility-grid i{

font-size:45px;

margin-bottom:20px;

}

/* ===================================
MEETING
=================================== */

.meeting{

display:grid;

grid-template-columns:1fr 1fr;

gap:60px;

align-items:center;

margin-bottom:80px;

}

.meeting img{

border-radius:20px;

box-shadow:var(--shadow);

}

.meeting h2{

font-size:50px;

margin-bottom:20px;

}

.meeting p{

line-height:2;

}

/* ===================================
GALLERY
=================================== */

.gallery-grid{

display:grid;

grid-template-columns:repeat(auto-fit,minmax(280px,1fr));

gap:20px;

}

.gallery-grid img{

height:250px;

object-fit:cover;

border-radius:15px;

cursor:pointer;

transition:.4s;

}

.gallery-grid img:hover{

transform:scale(1.05);

}

/* ===================================
MAP
=================================== */

iframe{

width:100%;

height:500px;

border:none;

border-radius:20px;

}

/* ===================================
CONTACT
=================================== */

#contact{

background:#111;

color:white;

text-align:center;

}

#contact h2{

font-size:45px;

margin-bottom:20px;

}

#contact p{

margin-bottom:30px;

}

#contact a{

display:inline-block;

padding:18px 40px;

background:var(--gold);

border-radius:40px;

color:white;

}

/* ===================================
FOOTER
=================================== */

footer{

background:black;

color:white;

padding:40px;

text-align:center;

}

footer img{

height:90px;

width:auto;

margin:auto;

margin-bottom:20px;

}

/* ===================================
FLOATING WHATSAPP
=================================== */

.whatsapp{

position:fixed;

bottom:25px;

right:25px;

width:65px;

height:65px;

background:#25D366;

border-radius:50%;

display:flex;

justify-content:center;

align-items:center;

font-size:30px;

color:white;

box-shadow:0 10px 25px rgba(0,0,0,.3);

z-index:999;

transition:.3s;

}

.whatsapp:hover{

transform:scale(1.1);

}

/* ===================================
LIGHTBOX
=================================== */

.lightbox{

position:fixed;

left:0;

top:0;

width:100%;

height:100%;

background:rgba(0,0,0,.95);

display:flex;

justify-content:center;

align-items:center;

flex-direction:column;

opacity:0;

visibility:hidden;

transition:.4s;

z-index:99999;

}

.lightbox.active{

opacity:1;

visibility:visible;

}

.lightbox-image{

width:75%;

max-height:75%;

object-fit:contain;

border-radius:10px;

box-shadow:0 10px 40px rgba(0,0,0,.5);

animation:fade .4s;

}

@keyframes fade{

from{

opacity:0;

transform:scale(.95);

}

to{

opacity:1;

transform:scale(1);

}

}

.close-lightbox{

position:absolute;

top:25px;

right:40px;

font-size:45px;

color:white;

cursor:pointer;

}

.prev,

.next{

position:absolute;

top:50%;

transform:translateY(-50%);

background:rgba(255,255,255,.15);

border:none;

color:white;

font-size:35px;

width:60px;

height:60px;

border-radius:50%;

cursor:pointer;

transition:.3s;

}

.prev:hover,

.next:hover{

background:#D4AF37;

}

.prev{

left:30px;

}

.next{

right:30px;

}

.thumbnail-wrapper{

display:flex;

gap:12px;

margin-top:25px;

overflow-x:auto;

padding:10px;

}

.thumbnail-wrapper img{

width:90px;

height:70px;

object-fit:cover;

cursor:pointer;

border-radius:8px;

border:3px solid transparent;

transition:.3s;

}

.thumbnail-wrapper img.active{

border-color:#D4AF37;

}

.thumbnail-wrapper img:hover{

transform:scale(1.05);

}

/* ===============================
Gallery Filter
=============================== */

.section-title{

text-align:center;
margin-bottom:40px;

}

.section-title h2{

font-size:50px;

}

.section-title p{

margin-top:15px;
color:#777;

}

.gallery-filter{

display:flex;
justify-content:center;
flex-wrap:wrap;
gap:15px;
margin-bottom:40px;

}

.filter-btn{

padding:12px 25px;
border:none;
background:#f3f3f3;
cursor:pointer;
border-radius:30px;
transition:.3s;

}

.filter-btn.active{

background:#D4AF37;
color:white;

}

.filter-btn:hover{

background:#111;
color:white;

}

.gallery-item{

transition:.5s;

}

.gallery-item.hide{

display:none;

}

.form-group{

display:flex;

flex-direction:column;

gap:8px;

}

.form-group label{

font-weight:600;

}

.booking-summary{

margin-top:35px;

padding:25px;

background:#fafafa;

border-radius:15px;

border-left:5px solid #D4AF37;

}

.booking-summary h3{

margin-bottom:15px;

}

.booking-summary p{

margin-bottom:10px;

}

.booking-summary h4{

font-size:26px;

color:#D4AF37;

margin-top:15px;

}

/*===========================

TESTIMONIAL

============================*/

#testimonial{

background:#f7f7f7;

}

.testimonial-card{

background:white;

padding:40px;

border-radius:20px;

box-shadow:0 15px 40px rgba(0,0,0,.1);

text-align:center;

}

.testimonial-card img{

width:90px;

height:90px;

border-radius:50%;

margin:auto;

margin-bottom:20px;

object-fit:cover;

}

.stars{

color:#D4AF37;

font-size:22px;

margin:15px 0;

}

.testimonial-card p{

line-height:1.9;

color:#666;

}

.swiper{

padding-bottom:60px;

}

/* ===================================
Navbar Glass
=================================== */

header{

backdrop-filter:blur(15px);

transition:.4s;

}

header.scrolled{

background:rgba(255,255,255,.95);

}

/* ===================================
Hero Zoom
=================================== */

.hero{

animation:zoomHero 20s infinite alternate;

}

@keyframes zoomHero{

0%{

background-size:100%;

}

100%{

background-size:115%;

}

}

/* ===================================
Scroll Indicator
=================================== */

.scroll-indicator{

position:absolute;

bottom:40px;

left:50%;

transform:translateX(-50%);

}

.scroll-indicator span{

display:block;

width:28px;

height:45px;

border:2px solid white;

border-radius:30px;

position:relative;

}

.scroll-indicator span::before{

content:"";

position:absolute;

width:6px;

height:6px;

background:white;

left:50%;

transform:translateX(-50%);

top:8px;

border-radius:50%;

animation:scrollDown 1.6s infinite;

}

@keyframes scrollDown{

0%{

top:8px;

opacity:1;

}

100%{

top:26px;

opacity:0;

}

}

/* ===================================
Stats
=================================== */

.stats{

display:grid;

grid-template-columns:repeat(auto-fit,minmax(220px,1fr));

gap:30px;

padding:80px 8%;

background:#111;

color:white;

text-align:center;

}

.stat{

padding:30px;

}

.stat h2{

font-size:55px;

color:#D4AF37;

}

.stat p{

margin-top:15px;

letter-spacing:1px;

}

/* ===================================
Hero Button Glow
=================================== */

.hero-btn{

box-shadow:0 0 30px rgba(212,175,55,.45);

}

.hero-btn:hover{

box-shadow:0 0 45px rgba(212,175,55,.8);

}

.menu a.active{

color:#D4AF37;

font-weight:700;

}

/* =========================
   PRELOADER
========================= */

#preloader{
    position:fixed;
    inset:0;
    width:100%;
    height:100dvh;
    background:#111;
    display:flex;
    flex-direction:column;
    justify-content:center;
    align-items:center;
    z-index:999999;
    transition:opacity .5s ease, visibility .5s ease;
}

#preloader.hide{
    opacity:0;
    visibility:hidden;
    pointer-events:none;
}

#preloader img{
    width:110px;
    max-width:30vw;
    height:auto;
    margin-bottom:20px;
    animation:pulseLogo 1.8s ease-in-out infinite;
}

#preloader h2{
    color:#D4AF37;
    font-family:'Cormorant Garamond', serif;
    font-size:32px;
    text-align:center;
    padding:0 20px;
}

@keyframes pulseLogo{

0%,100%{
    transform:scale(1);
}

50%{
    transform:scale(1.08);
}

}

/* Tablet */

@media (max-width:768px){

#preloader img{
    width:80px;
}

#preloader h2{
    font-size:24px;
}

}

/* HP kecil */

@media (max-width:480px){

#preloader img{
    width:70px;
}

#preloader h2{
    font-size:20px;
}

}