* { margin:0; padding:0; box-sizing:border-box; }
body { font-family:'Poppins',sans-serif; background:#0a0a0a; color:#fff; overflow-x:hidden; }
a { text-decoration:none; color:inherit; }
ul { list-style:none; }
.container { max-width:1280px; margin:0 auto; padding:0 20px; }

/* TOP BAR */
.top-bar { background:#000; padding:10px 0; font-size:13px; border-bottom:1px solid #222; }
.top-flex { display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; }
.top-contact a { margin-right:20px; color:#ccc; transition:.3s; }
.top-contact a:hover { color:var(--primary); }
.top-social a { display:inline-flex; width:30px; height:30px; background:#1a1a1a; border-radius:50%; align-items:center; justify-content:center; margin-left:6px; transition:.3s; }
.top-social a:hover { background:var(--primary); transform:translateY(-3px); }

/* HEADER */
.main-header { background:rgba(0,0,0,0.95); padding:15px 0; position:sticky; top:0; z-index:1000; backdrop-filter:blur(10px); border-bottom:2px solid var(--primary); transition:.35s; }
.main-header.scrolled { padding:8px 0; box-shadow:0 8px 25px rgba(0,0,0,0.5); }
.nav-flex { display:flex; align-items:center; justify-content:space-between; gap:20px; }
.logo-text { font-family:'Playfair Display',serif; font-size:24px; font-weight:900; letter-spacing:1px; }
.logo-text .r { color:var(--primary); }
.logo { display:flex; align-items:center; max-width:220px; }
.logo img { max-height:48px; width:auto; max-width:100%; object-fit:contain; display:block; }
.main-header.scrolled .logo img { max-height:36px; }
.main-nav ul { display:flex; gap:5px; }
.main-nav ul li { position:relative; }
.main-nav ul li a { padding:10px 15px; display:block; font-weight:600; font-size:14px; text-transform:uppercase; transition:.3s; }
.main-nav ul li a:hover { color:var(--primary); }

/* FIXED: Submenu is now portrait (vertical column), not landscape */
.submenu {
  position:absolute;
  top:100%;
  left:0;
  background:#111;
  min-width:260px;
  opacity:0;
  visibility:hidden;
  transform:translateY(10px);
  transition:.3s;
  border-top:3px solid var(--primary);
  box-shadow:0 10px 30px rgba(0,0,0,0.6);
  /* portrait layout: items stack vertically */
  display:flex;
  flex-direction:column;
}
.has-sub:hover .submenu,
.has-sub.open .submenu { opacity:1; visibility:visible; transform:translateY(0); }
.submenu li { width:100%; }
.submenu li a { padding:12px 20px; border-bottom:1px solid #222; display:block; white-space:nowrap; }
.submenu li a:hover { background:var(--primary); color:#fff; }

/* Nested sub-services flyout (2nd level dropdown) */
.has-sub-2 { position:relative; }
.has-sub-2 > a { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.sub-caret { font-size:11px; opacity:.7; }
.submenu-2 {
  position:absolute;
  top:0;
  left:100%;
  margin-left:1px;
  opacity:0;
  visibility:hidden;
  transform:translateY(10px);
}
/* FIXED: visibility now controlled only via JS-added .open class (not :hover)
   so siblings reliably close instead of staying open due to flyout overlap */
.has-sub-2.open .submenu-2 { opacity:1; visibility:visible; transform:translateY(0); }

.btn-book { background:var(--primary); color:#fff; padding:12px 25px; border-radius:50px; font-weight:700; text-transform:uppercase; font-size:13px; transition:.3s; box-shadow:0 0 20px rgba(212,160,23,0.5); animation:pulse 2s infinite; }
.btn-book:hover { transform:scale(1.05); box-shadow:0 0 30px rgba(212,160,23,0.8); }
@keyframes pulse { 0%,100%{box-shadow:0 0 20px rgba(212,160,23,0.5);} 50%{box-shadow:0 0 35px rgba(212,160,23,0.9);} }

.menu-toggle { display:none; font-size:24px; cursor:pointer; }

/* HERO SLIDER */
.hero { position:relative; min-height:90vh; overflow:hidden; }
.slider { position:absolute; inset:0; z-index:1; }
.slide { position:absolute; inset:0; background-size:cover; background-position:center; opacity:0; transition:opacity 1.5s; }
.slide.active { opacity:1; }
/* FIXED: Removed red tint from slide overlay — now pure dark overlay only */
.slide::after { content:''; position:absolute; inset:0; background:rgba(0,0,0,0.65); }
.hero-content { position:relative; z-index:2; padding:80px 0; display:grid; grid-template-columns:1fr 1fr; gap:50px; align-items:center; min-height:90vh; }

/* BOOKING FORM */
.booking-form { background:rgba(20,20,20,0.95); padding:35px; border-radius:20px; border:1px solid rgba(212,160,23,0.4); backdrop-filter:blur(10px); box-shadow:0 20px 60px rgba(212,160,23,0.2); }
.booking-form h3 { font-family:'Playfair Display',serif; font-size:28px; margin-bottom:20px; color:var(--primary); }
.booking-form .form-group { margin-bottom:15px; }
.booking-form label { display:block; font-size:12px; margin-bottom:5px; color:#bbb; text-transform:uppercase; }
.booking-form input, .booking-form select, .booking-form textarea { width:100%; padding:12px 15px; background:#0a0a0a; border:1px solid #333; border-radius:8px; color:#fff; transition:.3s; }
.booking-form input:focus, .booking-form select:focus { border-color:var(--primary); outline:none; box-shadow:0 0 10px rgba(212,160,23,0.3); }
.booking-form .row2 { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.autocomplete-wrap { position:relative; }
.autocomplete-list { display:none; position:absolute; top:100%; left:0; right:0; z-index:50; background:#111; border:1px solid rgba(212,160,23,0.4); border-radius:8px; margin-top:4px; max-height:220px; overflow-y:auto; box-shadow:0 10px 30px rgba(0,0,0,0.5); }
.autocomplete-item { padding:10px 14px; font-size:13px; color:#ddd; cursor:pointer; border-bottom:1px solid #222; }
.autocomplete-item:last-child { border-bottom:none; }
.autocomplete-item:hover, .autocomplete-item.active { background:rgba(212,160,23,0.2); color:#fff; }
.btn-submit { width:100%; padding:15px; background:var(--primary); color:#fff; border:none; border-radius:8px; font-weight:700; text-transform:uppercase; cursor:pointer; transition:.3s; font-size:15px; letter-spacing:1px; }
.btn-submit:hover { background:#ff0000; transform:translateY(-2px); }

/* HERO TEXT */
.hero-text h1 { font-family:'Playfair Display',serif; font-size:60px; font-weight:900; line-height:1.1; margin-bottom:20px; }
.hero-text h1 span { color:var(--primary); }
.hero-text p { font-size:18px; color:#ccc; margin-bottom:30px; line-height:1.6; }
.hero-btns a { display:inline-block; padding:14px 30px; margin-right:10px; border-radius:50px; font-weight:700; text-transform:uppercase; font-size:13px; transition:.3s; }
.btn-primary { background:var(--primary); color:#fff; }
.btn-outline { border:2px solid #fff; }
.btn-primary:hover, .btn-outline:hover { transform:translateY(-3px); box-shadow:0 10px 30px rgba(212,160,23,0.5); }

/* SECTIONS */
section { padding:80px 0; }
.section-title { text-align:center; margin-bottom:50px; }
.section-title small { color:var(--primary); text-transform:uppercase; letter-spacing:3px; font-weight:600; }
.section-title h2 { font-family:'Playfair Display',serif; font-size:48px; font-weight:900; margin-top:10px; }
.section-title h2 span { color:var(--primary); }

/* FLEET / SERVICE CARDS */
.grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(300px,1fr)); gap:30px; }
.card { background:#111; border-radius:20px; overflow:hidden; transition:.4s; border:1px solid #222; position:relative; }
.card:hover { transform:translateY(-10px); border-color:var(--primary); box-shadow:0 20px 50px rgba(212,160,23,0.3); }
/* FIXED: card-img always portrait (taller than wide) with fixed height */
.card-img { height:240px; overflow:hidden; }
.card-img img { width:100%; height:100%; object-fit:cover; object-position:center; transition:.5s; }
.card:hover .card-img img { transform:scale(1.1); }
.card-body { padding:25px; }
.card-body h3 { font-family:'Playfair Display',serif; font-size:24px; margin-bottom:5px; }
.card-body .model { color:var(--primary); font-size:13px; margin-bottom:10px; }
.card-body p { color:#aaa; font-size:14px; margin-bottom:15px; line-height:1.6; }
.card-body .btn-submit { width:auto; padding:10px 25px; font-size:12px; }

/* SERVICES */
.service-icon { width:80px; height:80px; background:linear-gradient(135deg,var(--primary),var(--secondary)); border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:32px; margin:0 auto 20px; }

/* SERVICE DETAIL IMAGE */
.service-detail-grid img {
  max-height:420px;
  object-fit:cover;
  object-position:center;
}

/* GALLERY */
.gallery-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(250px,1fr)); gap:15px; }
.gallery-grid > * { position:relative; overflow:hidden; border-radius:10px; }
.gallery-grid img { width:100%; height:230px; object-fit:cover; border-radius:10px; transition:.5s; cursor:pointer; display:block; }
.gallery-grid img:hover { transform:scale(1.08); box-shadow:0 10px 30px rgba(212,160,23,0.4); }

/* Lightbox */
.lightbox-overlay {
  position:fixed; inset:0; background:rgba(0,0,0,0.92);
  display:flex; align-items:center; justify-content:center;
  opacity:0; visibility:hidden; transition:.3s; z-index:5000; padding:30px;
}
.lightbox-overlay.active { opacity:1; visibility:visible; }
.lightbox-overlay .lightbox-img {
  max-width:90vw; max-height:85vh; border-radius:10px;
  box-shadow:0 20px 60px rgba(0,0,0,0.7);
  transform:scale(.9); transition:.35s;
}
.lightbox-overlay.active .lightbox-img { transform:scale(1); }
.lightbox-close {
  position:absolute; top:25px; right:35px; font-size:40px; color:#fff;
  cursor:pointer; line-height:1; transition:.3s;
}
.lightbox-close:hover { color:var(--primary); transform:rotate(90deg); }

/* REVIEWS */
.review-card { background:#111; padding:30px; border-radius:15px; border-left:4px solid var(--primary); }
.review-card .stars { color:gold; margin-bottom:10px; }
.review-card p { font-style:italic; color:#ccc; margin-bottom:15px; }
.review-card h4 { color:var(--primary); }

/* AREAS */
.area-tag { display:inline-block; padding:12px 25px; background:#111; border:1px solid #333; border-radius:50px; margin:5px; transition:.3s; }
.area-tag:hover { background:var(--primary); border-color:var(--primary); transform:scale(1.05); }

/* FOOTER */
.main-footer { background:#000; padding:60px 0 0; border-top:2px solid var(--primary); }
.footer-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(250px,1fr)); gap:40px; }
.footer-grid h3 { color:var(--primary); margin-bottom:20px; font-family:'Playfair Display',serif; }
.footer-grid p { color:#aaa; margin-bottom:10px; line-height:1.8; }
.footer-links li a { color:#aaa; display:block; padding:5px 0; transition:.3s; }
.footer-links li a:hover { color:var(--primary); padding-left:10px; }
.footer-bottom { text-align:center; padding:20px; border-top:1px solid #222; margin-top:40px; color:#666; }

/* PAGE BANNER */
/* FIXED: Removed red rgba tint — now uses plain dark overlay */
.page-banner {
  background: linear-gradient(rgba(0,0,0,0.82), rgba(0,0,0,0.88)),
              url('https://matodzitours.co.za/wp-content/uploads/2023/07/introbg-1.jpeg') center/cover;
  padding:120px 0;
  text-align:center;
}
.page-banner h1 { font-family:'Playfair Display',serif; font-size:60px; font-weight:900; }
.page-banner p { color:#ddd; margin-top:10px; }

/* RESPONSIVE */
@media(max-width:992px) {
  .logo { max-width:160px; }
  .logo img { max-height:38px; }
  .main-nav { display:none; position:absolute; top:100%; left:0; right:0; background:#000; padding:20px; z-index:999; }
  .main-nav.active { display:block; }
  .main-nav ul { flex-direction:column; }
  /* On mobile the submenu also stays vertical and visible under parent */
  .submenu {
    position:static;
    opacity:1;
    visibility:visible;
    transform:none;
    box-shadow:none;
    border-top:none;
    border-left:3px solid var(--primary);
    margin-left:15px;
    display:none;
  }
  .has-sub.open .submenu { display:flex; }
  .submenu-2 {
    position:static;
    opacity:1;
    visibility:visible;
    transform:none;
    box-shadow:none;
    border-top:none;
    border-left:3px solid var(--primary);
    margin-left:15px;
    display:none;
  }
  .has-sub-2.open .submenu-2 { display:flex; }
  .sub-caret { transition:.3s; }
  .has-sub-2.open > a .sub-caret { transform:rotate(90deg); }
  .menu-toggle { display:block; }
  .hero-content { grid-template-columns:1fr; }
  .hero-text h1 { font-size:40px; }
  .section-title h2 { font-size:32px; }
}

/* ADMIN */
.admin-body { background:#0a0a0a; min-height:100vh; display:flex; }
.sidebar { width:260px; background:#000; padding:20px; border-right:2px solid var(--primary); min-height:100vh; }
.sidebar h2 { color:var(--primary); margin-bottom:30px; font-family:'Playfair Display',serif; }
.sidebar a { display:block; padding:12px 15px; color:#ccc; border-radius:8px; margin-bottom:5px; transition:.3s; }
.sidebar a:hover, .sidebar a.active { background:var(--primary); color:#fff; }
.sidebar a i { width:25px; }
.admin-main { flex:1; padding:30px; }
.admin-card { background:#111; padding:25px; border-radius:15px; border:1px solid #222; margin-bottom:20px; }
.admin-card h3 { color:var(--primary); margin-bottom:15px; }
.form-control { width:100%; padding:10px; background:#0a0a0a; border:1px solid #333; border-radius:6px; color:#fff; margin-bottom:10px; }
.btn { padding:10px 20px; background:var(--primary); color:#fff; border:none; border-radius:6px; cursor:pointer; font-weight:600; }
.btn-danger { background:#444; }
table.admin-table { width:100%; border-collapse:collapse; }
.admin-table th, .admin-table td { padding:12px; border-bottom:1px solid #222; text-align:left; }
.admin-table th { background:#000; color:var(--primary); }
.stat-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:20px; margin-bottom:30px; }
.stat-card { background:linear-gradient(135deg,#111,#1a1a1a); padding:25px; border-radius:15px; border-left:4px solid var(--primary); }
.stat-card h4 { color:#aaa; font-size:13px; text-transform:uppercase; }
.stat-card .num { font-size:36px; font-weight:900; color:var(--primary); margin-top:10px; }
.
