/* ======================================
   Dropdown Menu
====================================== */
html {
  overflow-y: scroll;
}
.dropdown-menu {
  background-color: #111 !important;
  border: none;
  box-shadow: 0 2px 8px rgba(0,0,0,0.3);
}
.dropdown-menu .dropdown-item { color: #fff; }
.dropdown-menu .dropdown-item:hover {
  background-color: #ff0000;
  color: #fff;
}

/* Keep language switcher above page content */
.lang-switcher {
  position: fixed !important;
  left: 1rem;
  bottom: 1rem;
  z-index: 2147483647 !important;
  isolation: isolate;
}

/* Section headings spacing */
.section-title-spaced {
  letter-spacing: 1.4px;
  margin-bottom: 1rem;
}

@media (max-width: 767px) {
  .section-brick-bg {
    background-image: url("../img/Underground-pics/new-mobile-brick.png") !important;
    background-size: cover;
    background-position: center;
  }
}


/* ======================================
   Header background — transparent hero state vs. sticky state
====================================== */

/* At top of page: gradient so nav links are readable but bottom edge bleeds into the hero */
html:not(.sticky-header-active) #header.header-transparent .header-body {
  background: linear-gradient(
    to bottom,
    rgba(0, 0, 0, 0.82) 0%,
    rgba(0, 0, 0, 0.45) 65%,
    rgba(0, 0, 0, 0)    100%
  ) !important;
  transition: background 0.3s ease;
}

/* Once scrolled / sticky: solid dark background */
html.sticky-header-active #header.header-transparent .header-body {
  background: #111 !important;
  transition: background 0.3s ease;
}

/* ======================================
   About dropdown — Desktop & Mobile
====================================== */

/* Hide Bootstrap's default caret — Porto uses its own chevron <i> */
#mainNav .dropdown-toggle::after { display: none; }

/* ── Desktop dropdown panel ── */
@media (min-width: 992px) {
  #header .header-nav-main nav > ul > li.dropdown .dropdown-menu {
    background: #0f0f0f !important;
    border: 1px solid rgba(255,255,255,0.1) !important;
    border-top: 2px solid var(--primary) !important;
    border-radius: 0 0 6px 6px !important;
    box-shadow: 0 16px 32px rgba(0,0,0,0.5) !important;
    min-width: 180px;
    padding: 6px 0 !important;
  }

  /* Items */
  #header .header-nav-main nav > ul > li.dropdown .dropdown-menu li a {
    color: rgba(255,255,255,0.75) !important;
    font-size: 11.5px !important;
    font-weight: 600 !important;
    letter-spacing: 1px !important;
    text-transform: uppercase !important;
    padding: 11px 20px !important;
    border-bottom: 1px solid rgba(255,255,255,0.05) !important;
    transition: color 0.2s ease, background 0.2s ease !important;
  }
  #header .header-nav-main nav > ul > li.dropdown .dropdown-menu li:last-child a {
    border-bottom: none !important;
  }
  #header .header-nav-main nav > ul > li.dropdown .dropdown-menu li:hover > a,
  #header .header-nav-main nav > ul > li.dropdown .dropdown-menu li a:focus {
    color: #fff !important;
    background: rgba(255,255,255,0.06) !important;
  }

  /* ABOUT parent hover state — keep white text, suppress Porto's grey bg */
  #header .header-nav-main nav > ul > li.dropdown:hover > a,
  #header .header-nav-main nav > ul > li.dropdown.open > a {
    background: transparent !important;
    color: #fff !important;
  }
}

/* ── Mobile dropdown panel ── */
@media (max-width: 991px) {
  #header .header-nav-main nav > ul > li.dropdown .dropdown-menu {
    background: rgba(255,255,255,0.04) !important;
    border: none !important;
    border-top: 1px solid rgba(255,255,255,0.08) !important;
    box-shadow: none !important;
    padding: 4px 0 !important;
  }

  #header .header-nav-main nav > ul > li.dropdown .dropdown-menu li a {
    color: rgba(255,255,255,0.7) !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    letter-spacing: 1px !important;
    text-transform: uppercase !important;
    padding: 12px 24px !important;
    border-bottom: 1px solid rgba(255,255,255,0.05) !important;
  }
  #header .header-nav-main nav > ul > li.dropdown .dropdown-menu li:last-child a {
    border-bottom: none !important;
  }
  #header .header-nav-main nav > ul > li.dropdown .dropdown-menu li:hover > a {
    color: #fff !important;
    background: transparent !important;
  }
}

/* ======================================
   Mobile Nav Menu — Full Override
====================================== */
@media (max-width: 991px) {

  /* Menu panel background */
  #header .header-nav-main.header-nav-main-mobile-dark::before {
    background-color: #111 !important;
  }

  /* Top-level items: clean text, no red block for active */
  #header .header-nav-main.header-nav-main-mobile-dark nav > ul > li > a {
    color: rgba(255,255,255,0.85) !important;
    font-size: 13px !important;
    letter-spacing: 1.2px !important;
    text-transform: uppercase !important;
    font-weight: 600 !important;
    padding: 14px 20px !important;
    background: transparent !important;
    border-bottom: 1px solid rgba(255,255,255,0.07) !important;
    border-left: 3px solid transparent;
    transition: color 0.2s ease, border-left-color 0.2s ease !important;
  }

  /* Active item — left red bar instead of solid red block */
  #header .header-nav-main.header-nav-main-mobile-dark nav > ul > li > a.active,
  #header .header-nav-main.header-nav-main-mobile-dark nav > ul > li > a.current-page-active {
    background: transparent !important;
    color: #fff !important;
    border-left-color: var(--primary) !important;
  }

  /* Hover state */
  #header .header-nav-main.header-nav-main-mobile-dark nav > ul > li > a:hover,
  #header .header-nav-main.header-nav-main-mobile-dark nav > ul > li > a:focus {
    background: rgba(255,255,255,0.04) !important;
    color: #fff !important;
  }

  /* Last item no bottom border */
  #header .header-nav-main.header-nav-main-mobile-dark nav > ul > li:last-child > a {
    border-bottom: none !important;
  }

  /* Porto's default per-li border — remove since we handle it on the <a> */
  #header .header-nav-main.header-nav-main-mobile-dark nav > ul li {
    border-bottom: none !important;
  }
}

/* Mobile header controls */
@media (max-width: 991px) {
  .header-btn-collapse-nav {
    width: 50px;
    height: 50px;
    padding: 0;
    border-radius: 14px;
    border: none;
    background: linear-gradient(135deg, #e8222a, #a80000);
    color: #fff;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 4px 16px rgba(220,30,30,0.5), 0 2px 6px rgba(0,0,0,0.4);
    transition: transform 0.2s ease, box-shadow 0.2s ease;
  }
  .header-btn-collapse-nav i {
    font-size: 20px;
    line-height: 1;
  }
  .header-btn-collapse-nav:hover,
  .header-btn-collapse-nav:focus {
    transform: translateY(-2px);
    box-shadow: 0 8px 24px rgba(220,30,30,0.6), 0 4px 10px rgba(0,0,0,0.4);
    background: linear-gradient(135deg, #ff3a40, #c00000);
  }
  .header-btn-collapse-nav:active {
    transform: scale(0.95);
    box-shadow: 0 2px 8px rgba(220,30,30,0.4);
  }
  html.mobile-menu-opened .header-btn-collapse-nav {
    background: linear-gradient(135deg, #ff3a40, #c00000);
    box-shadow: 0 6px 20px rgba(220,30,30,0.55), 0 2px 8px rgba(0,0,0,0.4);
  }
}

@media (max-width: 767px) {
  .lang-switcher {
    margin: 0.75rem !important;
    z-index: 9999;
  }
  #langSticky {
    font-weight: 700;
    letter-spacing: 0.6px;
    padding: 8px 14px;
    border-radius: 10px;
    border: 1px solid rgba(255,255,255,0.18);
    background: linear-gradient(135deg, #d7262b, #a80000);
    box-shadow: 0 14px 28px rgba(0,0,0,0.3);
    transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
  }
  #langSticky:hover,
  #langSticky:focus {
    background: linear-gradient(135deg, #ff3b3f, #c30000);
    transform: translateY(-1px);
    box-shadow: 0 18px 34px rgba(0,0,0,0.35);
  }
  .lang-switcher .dropdown-menu {
    min-width: 9rem;
  }
}

/* ======================================
   Loader + Cross-fade
====================================== */
#loader {
  position: fixed;
  inset: 0;
  width: 100vw;
  height: 100vh;
  z-index: 9999;

  /* Dark overlay + background collage */
  background-image:
    linear-gradient(rgba(0,0,0,.65), rgba(0,0,0,.65)),
    -webkit-image-set(
      url('../img/Logo/collage_large.webp') type('image/webp'),
      url('../img/Logo/collage_large.png') type('image/png')
    );
  background-position: center center;
  background-size: cover;
  background-repeat: no-repeat;

  display: flex;
  justify-content: center;
  align-items: center;

  opacity: 1;
  transition: opacity 0.6s ease;
  will-change: opacity, transform;
  transform: translateZ(0); /* Force GPU acceleration (mobile fix) */
}

/* Responsive collage background per screen size */
@media (max-width: 1200px) {
  #loader {
    background-image:
      linear-gradient(rgba(0,0,0,.65), rgba(0,0,0,.65)),
      -webkit-image-set(
        url('../img/Logo/collage_medium.webp') type('image/webp'),
        url('../img/Logo/collage_medium.png') type('image/png')
      );
  }
}
@media (max-width: 600px) {
  #loader {
    background-image:
      linear-gradient(rgba(0,0,0,.65), rgba(0,0,0,.65)),
      -webkit-image-set(
        url('../img/Logo/collage_small.webp') type('image/webp'),
        url('../img/Logo/collage_small.png') type('image/png')
      );
  }
}

/* Loader logo animation — name matches inline @keyframes loaderPulse */
#loader img {
  width: min(60vw, 280px);
  height: auto;
  max-height: 40vh;
  object-fit: contain;
  animation: loaderPulse 2s infinite ease-in-out;
}

/* Hero video overlay */
.section.video.overlay::before {
  background: rgba(0,0,0,0.8);
}
@keyframes loaderPulse {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.07); }
}

/* Fade out loader */
#loader.fade-out {
  opacity: 0;
  pointer-events: none;
}

/* Page reveal transition */
.body {
  min-height: 100vh;
  opacity: 1;
  visibility: visible;
  transition: opacity 0.6s ease 0.15s;
}
.revealed .body {
  visibility: visible;
  opacity: 1;
}
@media (max-width: 768px) {
  .body,
  .revealed .body {
    transition: none !important;
  }
}

/* Reduced motion — disable pulse animation */
@media (prefers-reduced-motion: reduce) {
  #loader img { animation: none !important; }
}

/* Hero logo sizing */
.hero-logo {
  width: min(70vw, 420px);
  max-height: 45vh;
  height: auto;
  object-fit: contain;
}
@media (max-width: 600px) {
  .hero-logo {
    width: min(80vw, 320px);
    max-height: 35vh;
  }
}



header .header-nav-main nav > ul#mainNav > li > a.nav-link {
  font-size: 14px !important;     /* readable size for desktop */
  letter-spacing: 1.1px !important;/* a touch more breathing room */
  padding: 10px 16px !important;   /* keeps horizontal rhythm tight */
  text-transform: uppercase !important;
  color: #fff !important;
  transition: all 0.3s ease !important;
}

/* Keep underline hover effect — no color change */
header .header-nav-main nav > ul#mainNav > li > a.nav-link:hover,
header .header-nav-main nav > ul#mainNav > li > a.nav-link.active,
header .header-nav-main nav > ul#mainNav > li > a.nav-link.current-page-active {
  color: #fff !important;          /* stays white on hover */
}

/* Preserve and smooth out Porto’s underline effect — desktop only */
@media (min-width: 992px) {
  header .header-nav-main nav > ul#mainNav > li > a.nav-link::after {
    content: "";
    display: block;
    width: 0;
    height: 2px;
    background: #ff3c3c;
    transition: width 0.3s ease;
    margin: 4px auto 0 auto;
  }

  header .header-nav-main nav > ul#mainNav > li > a.nav-link:hover::after,
  header .header-nav-main nav > ul#mainNav > li > a.nav-link.active::after {
    width: 100%;
  }

  /* Slightly improve horizontal spacing between menu items */
  header .header-nav-main nav > ul#mainNav > li {
    margin: 0 10px !important;
  }
}

/* Kill any ::after on mobile nav links so no stray red bar appears */
@media (max-width: 991px) {
  header .header-nav-main nav > ul#mainNav > li > a.nav-link::after {
    display: none !important;
  }
}

/* Owner carousel — keep images visible on touch (no hover fade-out) */
@media (max-width: 991px) {
  .thumb-info-container-full-img .thumb-info-wrapper img {
    opacity: 1 !important;
    transform: none !important;
  }
  .thumb-info-container-full-img .owl-stage-outer:hover .thumb-info-wrapper img {
    opacity: 1 !important;
  }
}

/* Owners row spacing */
.owners-row {
  row-gap: 2rem;
  column-gap: 4rem;
}
@media (max-width: 991px) {
  .owners-row {
    column-gap: 1.5rem;
  }
}

/* Owner cards hover/tap feedback */
.owner-card {
  transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
}
.owner-card:hover,
.owner-card:focus-within {
  transform: translateY(-6px);
  box-shadow: 0 14px 30px rgba(0,0,0,0.35);
  border-color: rgba(255,255,255,0.18) !important;
}

/* Map + hours block */
.hours-card {
  background: rgba(255, 255, 255, 0.02);
  border: 1px solid rgba(255, 255, 255, 0.06);
  border-radius: 14px;
  padding: 24px 24px 8px;
  box-shadow: 0 18px 38px rgba(0,0,0,0.28);
}
.map-wrapper {
  position: relative;
  width: 100%;
  border-radius: 16px;
  overflow: hidden;
  box-shadow: 0 20px 40px rgba(0,0,0,0.32);
  aspect-ratio: 16 / 9;
  min-height: 520px;
}
.map-wrapper iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
  filter: invert(90%);
  pointer-events: auto;
  touch-action: pan-x pan-y;
}
/* Override Porto defaults so the iframe is fully clickable and not offset */
.google-map {
  margin: 0 !important;
  height: 100% !important;
  background: #0b0b0b;
}
@media (max-width: 767px) {
  .hours-card {
    padding: 20px 18px 6px;
  }
  .map-wrapper {
    aspect-ratio: auto;
    min-height: 360px;
    max-height: 60vh;
  }
}

/* ======================================
   Reviews Section
====================================== */
.testimonials-heading h2 {
  letter-spacing: 1.6px;
}
.testimonials-heading p {
  color: rgba(255,255,255,0.92);
}

.testimonial-section {
  position: relative;
  padding: 80px 0;
}
.testimonial-section::before {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.55);
  z-index: 1;
}
.testimonial-section .container {
  position: relative;
  z-index: 2;
}

/* Grid */
.reviews-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 16px;
}

/* Card */
.review-card {
  background: rgba(255, 255, 255, 0.07);
  border: 1px solid rgba(255, 255, 255, 0.12);
  -webkit-backdrop-filter: blur(6px);
  backdrop-filter: blur(6px);
  border-radius: 8px;
  padding: 24px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  transition: background 0.25s ease, transform 0.25s ease;
}
.review-card:hover {
  background: rgba(255, 255, 255, 0.13);
  transform: translateY(-3px);
}

/* Stars */
.review-stars {
  color: #EA1C21;
  font-size: 16px;
  letter-spacing: 2px;
}

/* Quote */
.review-text {
  color: rgba(255, 255, 255, 0.92);
  font-size: 13.5px;
  line-height: 1.7;
  margin: 0;
  flex: 1;
}

/* Author */
.review-author {
  display: flex;
  flex-direction: column;
  gap: 2px;
  border-top: 1px solid rgba(255,255,255,0.1);
  padding-top: 12px;
  margin-top: auto;
}
.review-name {
  color: #fff;
  font-weight: 700;
  font-size: 13px;
  letter-spacing: 0.5px;
}
.review-source {
  color: rgba(255,255,255,0.45);
  font-size: 11px;
  letter-spacing: 0.5px;
}

/* Space between review cards and the Leave a Review button */
.reviews-grid + .row {
  margin-top: 48px !important;
}

/* Responsive */
@media (max-width: 991px) {
  .reviews-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (max-width: 575px) {
  .reviews-grid {
    grid-template-columns: 1fr;
  }
}

/* FAQ section — distinct background so it reads as its own zone without relying on padding */
.faq-section {
  background-color: #0d0d0d;
  border-top: 1px solid rgba(255, 255, 255, 0.06) !important;
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
  padding: 60px 0 !important;
  margin: 0 !important;
}

/* Dark accordion cards */
#faq .accordion.accordion-modern-status > .card {
  background: transparent;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  border-radius: 6px;
  overflow: hidden;
}

#faq .accordion.accordion-modern-status > .card + .card {
  margin-top: 10px;
}

#faq .accordion.accordion-modern-status > .card .card-header a {
  background-color: rgba(255, 255, 255, 0.04) !important;
  color: #fff !important;
  font-size: 14px;
  letter-spacing: 0.4px;
  transition: background 0.2s ease, color 0.2s ease;
}

#faq .accordion.accordion-modern-status > .card .card-header a:hover {
  background-color: rgba(255, 255, 255, 0.08) !important;
}

#faq .accordion-modern-status-primary.accordion-modern-status > .card .card-header a:not(.collapsed) {
  background-color: var(--primary) !important;
  color: #fff !important;
}

#faq .accordion-modern-status-primary.accordion-modern-status > .card:hover .card-header a.collapsed {
  color: #fff !important;
}

#faq .card-body {
  background-color: rgba(255, 255, 255, 0.02);
  border-top: 1px solid rgba(255, 255, 255, 0.06);
}

/* Owner section subtle texture */
.owner-texture {
  position: relative;
  overflow: hidden;
}
.owner-texture::after {
  content: "";
  position: absolute;
  inset: 0;
  background-image: radial-gradient(rgba(255,255,255,0.04) 1px, transparent 0);
  background-size: 90px 90px;
  opacity: 0.25;
  pointer-events: none;
}
@media (max-width: 767px) {
  .owner-texture::after {
    background-size: 70px 70px;
    opacity: 0.22;
  }
}

/* Keep fonts consistent on mobile (avoid Open Sans/Playfair fallbacks) */
#header .header-nav-main.header-nav-main-font-alternative nav > ul > li > a,
.testimonial blockquote,
.testimonial blockquote p {
  font-family: "Poppins", sans-serif;
}

body,
p,
span,
a,
li,
button,
input,
textarea {
  font-family: "Poppins", sans-serif !important;
}
h1,
h2,
h3,
h4,
h5,
h6 {
  font-family: "Staatliches", sans-serif !important;
}

/* Prevent anchor targets from hiding under the sticky header */
#home,
#company-intro,
#services,
#faq,
#contact,
#hiddenContactForm {
  scroll-margin-top: 90px;
}
@media (max-width: 768px) {
  #home,
  #company-intro,
  #services,
  #faq,
  #contact,
  #hiddenContactForm {
    scroll-margin-top: 72px;
  }
}

/* ======================================
   Highlight Pieces — CSS Grid Gallery
====================================== */
.gallery-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 6px;
}

.gallery-item {
  position: relative;
  aspect-ratio: 1 / 1;
  overflow: hidden;
  display: block;
  text-decoration: none;
}

.gallery-item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center top;
  display: block;
  transition: transform 0.5s ease;
}

.gallery-item:hover img {
  transform: scale(1.08);
}

.gallery-item-caption {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  padding: 28px 12px 12px;
  background: linear-gradient(to top, rgba(0,0,0,0.78) 0%, transparent 100%);
  color: #fff;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 1.2px;
  text-transform: uppercase;
  transform: translateY(100%);
  transition: transform 0.32s ease;
}

.gallery-item:hover .gallery-item-caption {
  transform: translateY(0);
}

@media (max-width: 767px) {
  .gallery-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 4px;
  }
  .gallery-item-caption {
    transform: translateY(0);
    font-size: 11px;
  }
}
