/* Villa Bukit Nirwana — style.css */
:root {
  --primary: #2e7d32;
  --primary-dark: #1b5e20;
  --primary-light: #4caf50;
  --accent: #a5d6a7;
  --accent-dark: #66bb6a;
  --bg: #f1f8e9;
  --bg-card: #ffffff;
  --text: #1b2a1b;
  --text-muted: #4a6741;
  --text-light: #6a8a6a;
  --border: #c8e6c9;
  --shadow: rgba(46,125,50,0.12);
  --shadow-md: rgba(46,125,50,0.2);
  --radius: 12px;
  --radius-lg: 20px;
  --font: -apple-system,"Segoe UI",Roboto,Arial,sans-serif;
}

/* ===== RESET ===== */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:var(--font);background:var(--bg);color:var(--text);line-height:1.6;padding-top:40px}
img{max-width:100%;display:block}
a{color:var(--primary);text-decoration:none}
a:hover{color:var(--primary-dark)}
ul{list-style:none}
button,input,select,textarea{font-family:inherit;font-size:inherit}

/* ===== DEMO BAR ===== */
.demo-bar{
  position:fixed;top:0;left:0;right:0;z-index:9999;
  background:#2e7d32;color:#fff;
  text-align:center;padding:8px 16px;font-size:13px;
  display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap;
}
.demo-bar a{color:#a5d6a7;font-weight:600}
.demo-bar a:hover{color:#fff;text-decoration:underline}

/* ===== HEADER & NAV ===== */
header{
  background:var(--bg-card);
  border-bottom:2px solid var(--border);
  position:sticky;top:40px;z-index:100;
  box-shadow:0 2px 12px var(--shadow);
}
.header-inner{
  max-width:1100px;margin:0 auto;padding:0 20px;
  display:flex;align-items:center;justify-content:space-between;
  min-height:64px;
}
.logo{
  display:flex;align-items:center;gap:10px;
  font-size:1.25rem;font-weight:800;color:var(--primary-dark);letter-spacing:-0.5px;
}
.logo svg{flex-shrink:0}
.logo span{display:flex;flex-direction:column;line-height:1.1}
.logo .tagline{font-size:0.6rem;font-weight:400;color:var(--text-muted);letter-spacing:2px;text-transform:uppercase}

/* checkbox hack nav */
#nav-toggle{display:none}
.nav-label{
  display:none;cursor:pointer;padding:8px;
  background:none;border:none;color:var(--primary);
}
.hamburger,.hamburger::before,.hamburger::after{
  display:block;width:24px;height:2px;background:var(--primary);
  transition:all .3s;position:relative;
}
.hamburger::before,.hamburger::after{content:'';position:absolute;left:0}
.hamburger::before{top:-7px}
.hamburger::after{top:7px}
nav ul{display:flex;align-items:center;gap:4px}
nav ul a{
  display:block;padding:8px 14px;border-radius:8px;
  font-size:0.9rem;font-weight:500;color:var(--text);
  transition:background .2s,color .2s;
}
nav ul a:hover,nav ul a.active{background:var(--accent);color:var(--primary-dark)}
.nav-cta{
  background:var(--primary)!important;color:#fff!important;
  padding:8px 18px!important;border-radius:8px!important;
  font-weight:700!important;
}
.nav-cta:hover{background:var(--primary-dark)!important}

/* ===== HERO ===== */
.hero{
  background:linear-gradient(135deg,var(--primary-dark) 0%,var(--primary) 50%,#388e3c 100%);
  color:#fff;padding:80px 20px 60px;text-align:center;
  position:relative;overflow:hidden;
}
.hero::before{
  content:'';position:absolute;inset:0;
  background:radial-gradient(ellipse at 70% 50%, rgba(165,214,167,.15) 0%, transparent 60%);
}
.hero-content{position:relative;z-index:1;max-width:800px;margin:0 auto}
.hero-badge{
  display:inline-block;background:rgba(255,255,255,.15);
  border:1px solid rgba(255,255,255,.3);border-radius:50px;
  padding:6px 18px;font-size:0.78rem;font-weight:600;letter-spacing:2px;
  text-transform:uppercase;margin-bottom:20px;
}
.hero h1{font-size:clamp(2rem,6vw,3.5rem);font-weight:900;line-height:1.1;margin-bottom:16px}
.hero h1 em{color:var(--accent);font-style:normal}
.hero p{font-size:1.1rem;opacity:.9;max-width:560px;margin:0 auto 32px}
.hero-svg{margin:0 auto 40px;opacity:.9}
.hero-btns{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}
.btn{
  display:inline-flex;align-items:center;gap:8px;
  padding:14px 28px;border-radius:50px;font-weight:700;font-size:0.95rem;
  cursor:pointer;border:none;transition:all .25s;text-decoration:none;
}
.btn-primary{background:#fff;color:var(--primary-dark)}
.btn-primary:hover{background:var(--accent);color:var(--primary-dark);transform:translateY(-2px)}
.btn-outline{background:transparent;color:#fff;border:2px solid rgba(255,255,255,.6)}
.btn-outline:hover{background:rgba(255,255,255,.15);border-color:#fff}
.btn-green{background:var(--primary);color:#fff}
.btn-green:hover{background:var(--primary-dark);transform:translateY(-2px)}
.btn-accent{background:var(--accent);color:var(--primary-dark)}
.btn-accent:hover{background:var(--accent-dark);color:#fff}

/* ===== STAT STRIP ===== */
.stat-strip{
  background:var(--bg-card);border-bottom:1px solid var(--border);
  padding:20px;
}
.stat-strip-inner{
  max-width:1100px;margin:0 auto;
  display:grid;grid-template-columns:repeat(2,1fr);gap:16px;text-align:center;
}
.stat-item strong{display:block;font-size:1.6rem;color:var(--primary);font-weight:800}
.stat-item span{font-size:0.8rem;color:var(--text-muted)}

/* ===== SECTION ===== */
.section{padding:60px 20px}
.section-inner{max-width:1100px;margin:0 auto}
.section-header{text-align:center;margin-bottom:40px}
.section-label{
  display:inline-block;background:var(--accent);color:var(--primary-dark);
  padding:4px 14px;border-radius:50px;font-size:0.75rem;font-weight:700;
  letter-spacing:1.5px;text-transform:uppercase;margin-bottom:10px;
}
.section h2{font-size:clamp(1.5rem,4vw,2.2rem);color:var(--primary-dark);font-weight:800;margin-bottom:8px}
.section p.lead{color:var(--text-muted);max-width:560px;margin:0 auto}
.section-alt{background:var(--bg-card)}

/* ===== VILLA CARDS ===== */
.villa-grid{display:grid;gap:24px}
.villa-card{
  background:var(--bg-card);border-radius:var(--radius-lg);
  border:1px solid var(--border);overflow:hidden;
  box-shadow:0 4px 16px var(--shadow);
  transition:transform .25s,box-shadow .25s;
}
.villa-card:hover{transform:translateY(-4px);box-shadow:0 8px 28px var(--shadow-md)}
.villa-img{
  height:220px;position:relative;overflow:hidden;
  display:flex;align-items:center;justify-content:center;
}
.villa-img.amara{background:linear-gradient(135deg,#1b5e20,#2e7d32)}
.villa-img.serenity{background:linear-gradient(135deg,#33691e,#558b2f)}
.villa-img.peak{background:linear-gradient(135deg,#004d40,#00695c)}
.villa-img.aurora{background:linear-gradient(135deg,#1a237e,#283593)}
.villa-img.garden{background:linear-gradient(135deg,#4a148c,#6a1b9a)}
.villa-img.forest{background:linear-gradient(135deg,#bf360c,#d84315)}
.villa-badge{
  position:absolute;top:12px;left:12px;
  background:rgba(0,0,0,.5);color:#fff;border-radius:50px;
  padding:4px 12px;font-size:0.75rem;font-weight:700;
}
.villa-badge.available{background:var(--primary)}
.villa-badge.booked{background:#c62828}
.villa-body{padding:20px}
.villa-body h3{font-size:1.15rem;font-weight:800;color:var(--primary-dark);margin-bottom:4px}
.villa-type{font-size:0.8rem;color:var(--text-muted);margin-bottom:10px}
.villa-meta{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.villa-meta span{
  display:flex;align-items:center;gap:4px;font-size:0.82rem;color:var(--text-muted);
}
.villa-price{
  display:flex;align-items:baseline;gap:6px;
  border-top:1px solid var(--border);padding-top:12px;margin-top:12px;
}
.villa-price strong{font-size:1.3rem;color:var(--primary);font-weight:800}
.villa-price span{font-size:0.8rem;color:var(--text-muted)}
.villa-features{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
.tag{
  background:var(--bg);border:1px solid var(--border);
  border-radius:50px;padding:3px 10px;font-size:0.75rem;color:var(--text-muted);
}

/* ===== FASILITAS ===== */
.fasilitas-grid{display:grid;gap:16px;grid-template-columns:repeat(2,1fr)}
.fasil-card{
  background:var(--bg-card);border-radius:var(--radius);
  border:1px solid var(--border);padding:20px;text-align:center;
  box-shadow:0 2px 8px var(--shadow);
}
.fasil-icon{
  width:56px;height:56px;border-radius:16px;
  background:linear-gradient(135deg,var(--accent),var(--accent-dark));
  display:flex;align-items:center;justify-content:center;
  margin:0 auto 12px;
}
.fasil-card h3{font-size:0.95rem;font-weight:700;color:var(--primary-dark);margin-bottom:4px}
.fasil-card p{font-size:0.8rem;color:var(--text-muted)}

/* ===== PAKET ===== */
.paket-grid{display:grid;gap:20px}
.paket-card{
  background:var(--bg-card);border-radius:var(--radius-lg);
  border:2px solid var(--border);padding:28px;
  transition:border-color .2s,box-shadow .2s;
}
.paket-card.featured{border-color:var(--primary);box-shadow:0 4px 20px var(--shadow-md)}
.paket-card.featured .paket-badge{display:inline-block}
.paket-badge{
  display:none;background:var(--primary);color:#fff;
  padding:3px 12px;border-radius:50px;font-size:0.72rem;font-weight:700;
  margin-bottom:10px;
}
.paket-card h3{font-size:1.2rem;font-weight:800;color:var(--primary-dark);margin-bottom:6px}
.paket-card .desc{font-size:0.88rem;color:var(--text-muted);margin-bottom:16px}
.paket-price{font-size:1.5rem;font-weight:800;color:var(--primary);margin-bottom:16px}
.paket-price small{font-size:0.78rem;font-weight:400;color:var(--text-muted)}
.paket-list{display:flex;flex-direction:column;gap:8px;margin-bottom:20px}
.paket-list li{
  display:flex;align-items:flex-start;gap:8px;font-size:0.85rem;color:var(--text);
}
.paket-list li::before{
  content:'';display:inline-block;width:16px;height:16px;flex-shrink:0;margin-top:2px;
  background:var(--primary);border-radius:50%;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23fff' d='M6.5 11.5L3 8l1-1 2.5 2.5 5-5 1 1z'/%3E%3C/svg%3E");
  background-size:cover;
}

/* ===== TARIF TABLE ===== */
.tarif-table{width:100%;border-collapse:collapse;background:var(--bg-card);border-radius:var(--radius);overflow:hidden;box-shadow:0 2px 12px var(--shadow)}
.tarif-table th{background:var(--primary);color:#fff;padding:12px 16px;text-align:left;font-size:0.85rem}
.tarif-table td{padding:12px 16px;border-bottom:1px solid var(--border);font-size:0.88rem}
.tarif-table tr:last-child td{border-bottom:none}
.tarif-table tr:nth-child(even) td{background:#f9fbe7}
.tarif-table .price{color:var(--primary);font-weight:700}
.avail{display:inline-block;border-radius:50px;padding:3px 10px;font-size:0.72rem;font-weight:700}
.avail.yes{background:#e8f5e9;color:#2e7d32}
.avail.no{background:#ffebee;color:#c62828}

/* ===== DETAIL PAGE ===== */
.detail-hero{
  background:linear-gradient(135deg,#1b5e20,#2e7d32);
  padding:60px 20px 40px;color:#fff;
}
.detail-gallery{
  display:grid;grid-template-columns:1fr 1fr;gap:4px;border-radius:var(--radius);overflow:hidden;
  max-width:700px;margin:0 auto 32px;
}
.gallery-main{
  grid-column:1/-1;height:220px;
  background:linear-gradient(135deg,#1b5e20,#2e7d32);
  display:flex;align-items:center;justify-content:center;
}
.gallery-thumb{
  height:110px;display:flex;align-items:center;justify-content:center;
}
.gallery-thumb:nth-child(2){background:linear-gradient(135deg,#33691e,#4caf50)}
.gallery-thumb:nth-child(3){background:linear-gradient(135deg,#004d40,#00695c)}
.gallery-thumb:nth-child(4){background:linear-gradient(135deg,#f9a825,#f57f17)}
.gallery-thumb:nth-child(5){background:linear-gradient(135deg,#4a148c,#6a1b9a);grid-column:span 2}

.detail-info{max-width:1100px;margin:0 auto;padding:40px 20px}
.detail-cols{display:flex;flex-direction:column;gap:32px}
.detail-main{}
.detail-sidebar{}
.spec-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:24px}
.spec-item{background:var(--bg);border-radius:var(--radius);padding:14px;text-align:center}
.spec-item strong{display:block;font-size:1.1rem;color:var(--primary);font-weight:800}
.spec-item span{font-size:0.75rem;color:var(--text-muted)}
.fasil-list{display:flex;flex-direction:column;gap:8px}
.fasil-list li{
  display:flex;align-items:center;gap:8px;font-size:0.88rem;padding:8px 12px;
  background:var(--bg);border-radius:8px;
}
.fasil-list li svg{flex-shrink:0;color:var(--primary)}

/* booking card */
.booking-card{
  background:var(--bg-card);border-radius:var(--radius-lg);
  border:2px solid var(--primary);padding:24px;
  box-shadow:0 4px 20px var(--shadow-md);
}
.booking-card .price{font-size:1.8rem;font-weight:900;color:var(--primary)}
.booking-card .price small{font-size:0.8rem;font-weight:400;color:var(--text-muted)}
.season-prices{margin:16px 0}
.season-prices h4{font-size:0.85rem;font-weight:700;color:var(--text-muted);margin-bottom:8px}
.season-row{display:flex;justify-content:space-between;padding:6px 0;border-bottom:1px solid var(--border);font-size:0.85rem}
.season-row:last-child{border-bottom:none}

/* ulasan */
.ulasan-list{display:flex;flex-direction:column;gap:16px}
.ulasan-item{background:var(--bg-card);border-radius:var(--radius);border:1px solid var(--border);padding:18px}
.ulasan-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:8px}
.ulasan-name{font-weight:700;color:var(--primary-dark);font-size:0.9rem}
.ulasan-date{font-size:0.75rem;color:var(--text-muted)}
.stars{color:#f9a825;font-size:1rem;letter-spacing:2px;margin-bottom:4px}
.ulasan-text{font-size:0.85rem;color:var(--text-muted);line-height:1.6}

/* map */
.map-box{
  background:linear-gradient(135deg,#e8f5e9,#c8e6c9);
  border-radius:var(--radius);padding:40px 20px;
  text-align:center;border:1px solid var(--border);
  position:relative;overflow:hidden;
}
.map-box svg{opacity:.4;position:absolute;inset:0;width:100%;height:100%}

/* ===== FORMS ===== */
.form-card{background:var(--bg-card);border-radius:var(--radius-lg);border:1px solid var(--border);padding:28px;box-shadow:0 4px 16px var(--shadow)}
.form-group{margin-bottom:18px}
label{display:block;font-size:0.85rem;font-weight:600;color:var(--text);margin-bottom:6px}
input[type=text],input[type=email],input[type=tel],input[type=number],input[type=date],select,textarea{
  width:100%;padding:12px 16px;border:1.5px solid var(--border);border-radius:var(--radius);
  background:var(--bg);color:var(--text);font-size:0.95rem;
  transition:border-color .2s,box-shadow .2s;
  -webkit-appearance:none;
}
input:focus,select:focus,textarea:focus{
  outline:none;border-color:var(--primary);
  box-shadow:0 0 0 3px rgba(46,125,50,.12);
}
textarea{min-height:120px;resize:vertical}
.form-row{display:grid;gap:16px}
.btn-block{width:100%;display:flex;justify-content:center;padding:14px}

/* ===== KALKULATOR ===== */
.kalk-layout{display:flex;flex-direction:column;gap:24px}
.kalk-result{
  background:linear-gradient(135deg,var(--primary-dark),var(--primary));
  color:#fff;border-radius:var(--radius-lg);padding:28px;
  box-shadow:0 4px 20px var(--shadow-md);
}
.kalk-result h3{font-size:1.1rem;opacity:.85;margin-bottom:16px}
.result-row{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid rgba(255,255,255,.15);font-size:0.9rem}
.result-row:last-child{border-bottom:none}
.result-total{font-size:1.5rem;font-weight:900;margin-top:12px}
.result-total span{font-size:0.8rem;font-weight:400;opacity:.7}
.dp-note{background:rgba(255,255,255,.15);border-radius:10px;padding:12px;margin-top:16px;font-size:0.82rem}

/* ===== KONTAK ===== */
.kontak-grid{display:grid;gap:24px}
.kontak-info{display:flex;flex-direction:column;gap:16px}
.kontak-item{
  display:flex;align-items:flex-start;gap:14px;
  background:var(--bg-card);border-radius:var(--radius);
  border:1px solid var(--border);padding:18px;
}
.kontak-icon{
  width:44px;height:44px;flex-shrink:0;border-radius:12px;
  background:linear-gradient(135deg,var(--accent),var(--accent-dark));
  display:flex;align-items:center;justify-content:center;
}
.kontak-item h4{font-size:0.88rem;font-weight:700;color:var(--primary-dark);margin-bottom:2px}
.kontak-item p,.kontak-item a{font-size:0.85rem;color:var(--text-muted)}
.kontak-item a:hover{color:var(--primary)}

/* ===== FOOTER ===== */
footer{
  background:var(--primary-dark);color:rgba(255,255,255,.8);
  padding:40px 20px 20px;
}
.footer-inner{max-width:1100px;margin:0 auto}
.footer-top{
  display:grid;gap:28px;margin-bottom:28px;
  padding-bottom:28px;border-bottom:1px solid rgba(255,255,255,.15);
}
.footer-brand .logo{color:#fff}
.footer-brand p{font-size:0.85rem;margin-top:10px;line-height:1.7;opacity:.75}
.footer-col h4{font-size:0.85rem;font-weight:700;color:#fff;margin-bottom:12px;letter-spacing:1px;text-transform:uppercase}
.footer-col ul{display:flex;flex-direction:column;gap:8px}
.footer-col ul a{font-size:0.83rem;color:rgba(255,255,255,.65);transition:color .2s}
.footer-col ul a:hover{color:var(--accent)}
.footer-bottom{display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between;align-items:center;font-size:0.78rem;opacity:.6}

/* ===== BREADCRUMB ===== */
.breadcrumb{background:var(--bg-card);border-bottom:1px solid var(--border);padding:10px 20px}
.breadcrumb-inner{max-width:1100px;margin:0 auto;display:flex;gap:6px;align-items:center;font-size:0.8rem;color:var(--text-muted)}
.breadcrumb-inner a{color:var(--primary)}
.breadcrumb-inner span{opacity:.5}

/* ===== FILTER BAR ===== */
.filter-bar{
  background:var(--bg-card);border-bottom:1px solid var(--border);
  padding:16px 20px;position:sticky;top:104px;z-index:90;
}
.filter-inner{max-width:1100px;margin:0 auto;display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.filter-inner label{font-size:0.8rem;font-weight:600;color:var(--text-muted)}
.filter-inner select{
  padding:8px 12px;border-radius:8px;border:1.5px solid var(--border);
  font-size:0.82rem;background:var(--bg);flex:1;min-width:120px;
}

/* ===== PAGE HERO ===== */
.page-hero{
  background:linear-gradient(135deg,var(--primary-dark),var(--primary));
  color:#fff;padding:52px 20px 40px;text-align:center;
}
.page-hero h1{font-size:clamp(1.6rem,4vw,2.4rem);font-weight:900;margin-bottom:8px}
.page-hero p{opacity:.85;max-width:520px;margin:0 auto}

/* ===== ALERT / INFO BOX ===== */
.info-box{
  background:var(--accent);border-left:4px solid var(--primary);
  border-radius:var(--radius);padding:16px 20px;
  font-size:0.85rem;color:var(--primary-dark);margin-bottom:20px;
}
.info-box strong{font-weight:700}

/* ===== RESPONSIVE ===== */
@media(min-width:480px){
  .stat-strip-inner{grid-template-columns:repeat(4,1fr)}
  .fasilitas-grid{grid-template-columns:repeat(2,1fr)}
}
@media(min-width:640px){
  .villa-grid{grid-template-columns:repeat(2,1fr)}
  .fasilitas-grid{grid-template-columns:repeat(3,1fr)}
  .paket-grid{grid-template-columns:repeat(2,1fr)}
  .form-row{grid-template-columns:1fr 1fr}
}
@media(min-width:768px){
  .detail-gallery{grid-template-columns:2fr 1fr 1fr}
  .gallery-main{grid-column:1;grid-row:1/3;height:340px}
  .gallery-thumb{height:166px}
  .gallery-thumb:nth-child(5){grid-column:auto}
  .detail-cols{flex-direction:row}
  .detail-main{flex:1}
  .detail-sidebar{width:300px;flex-shrink:0}
  .kontak-grid{grid-template-columns:1fr 1fr}
  .kalk-layout{flex-direction:row}
  .kalk-layout .form-card{flex:1}
  .kalk-layout .kalk-result{width:320px;flex-shrink:0}
}
@media(min-width:900px){
  .villa-grid{grid-template-columns:repeat(3,1fr)}
  .fasilitas-grid{grid-template-columns:repeat(4,1fr)}
  .paket-grid{grid-template-columns:repeat(3,1fr)}
  .footer-top{grid-template-columns:2fr 1fr 1fr 1fr}
  .kontak-grid{grid-template-columns:2fr 1fr}
}
@media(max-width:640px){
  .nav-label{display:flex;align-items:center}
  nav{position:absolute;top:100%;left:0;right:0;background:var(--bg-card);border-bottom:2px solid var(--border);max-height:0;overflow:hidden;transition:max-height .35s ease}
  #nav-toggle:checked~nav{max-height:400px}
  nav ul{flex-direction:column;align-items:stretch;padding:12px}
  nav ul a{padding:12px 16px;border-radius:8px}
  .header-inner{flex-wrap:wrap;position:relative}
}
