/* ==============================
   Global Styles for IDM Multiservices
   ============================== */
/* Base Reset */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
body {
  font-family: 'Segoe UI', sans-serif;
  font-size: 16px;
  background-color: #ffffff;
  color: #333;
  line-height: 1.6;
  padding-top: 80px; /* leave space for fixed navbar */
}
img {
  max-width: 100%;
  height: auto;
}

/* ==============================
   NAVBAR
   ============================== */
.navbar {
  background-color: #002147;
  color: white;
  padding: 1rem 2rem;
  display: flex;
  justify-content: space-between;
  align-items: center;
  position: fixed;
  width: 100%;
  top: 0;
  z-index: 1000;
  gap: 1rem;
}

.nav-left {
  display: flex;
  align-items: center;
  gap: 2rem;
}

.nav-left .logo img {
  height: 90px;
  width: auto;
}

.menu-links {
  display: flex;
  gap: 1.5rem;
}
.menu-links a {
  color: white;
  text-decoration: none;
  font-weight: 500;
  font-size: 1.5rem;
}
.menu-links a:hover {
  text-decoration: underline;
}

/* Active/Current page link */
.menu-links a.active,
.menu-links a[aria-current="page"] {
  color: #f7a600;          /* your yellow */
  font-weight: bold;        /* optional */
}

.menu-right {
  display: flex;
  gap: 1rem;
  align-items: center;
}

.reservation-button {
  background-color: white;
  color: #002147;
  padding: 0.4rem 0.8rem;
  border-radius: 10px;
  font-weight: bold;
  text-decoration: none;
  font-size: 1.3rem;
}
.reservation-button:hover {
  background-color: #e6e6e6;
}

.lang-dropdown select {
  padding: 0.3rem;
  border-radius: 4px;
}

/* ==============================
   HERO SECTION
   ============================== */
.hero {
  background-color: #f4f7fc;
  text-align: center;
  padding: 100px 20px 30px; /* changed from 60px to 30px */
}

.hero h1 {
  font-size: 2.4rem;
  color: #002147;
  animation: fadeInUp 1s ease forwards;
}

.hero-section {
  position: relative;
  height: 700px; /* Increase height if needed */
  background: linear-gradient(rgba(255,255,255,0.3), rgba(255,255,255,0.3)),
              url('assets/images/family.jpg') center/cover no-repeat;
  background-position: center top; /* Force the image to start from top */
  background-repeat: no-repeat;
  background-size: cover;
  margin: 0;
  padding: 0;
  z-index: 1;
}


.hero-text-overlay {
  max-width: 600px;
  background: rgba(255, 255, 255, 0.85); /* optional: semi-transparent background */
  padding: 30px;
  border-radius: 10px;
}

.hero-text-overlay h1 {
  font-size: 3rem;
  font-weight: 800;
  margin-bottom: 10px;
  color: #002147;
}

.hero-text-overlay .highlight {
  font-size: 1.4rem;
  font-weight: bold;
  color: #f7a600;
  margin-bottom: 15px;
}

.hero-text-overlay .description {
  font-size: 1.1rem;
  color: #333;
  line-height: 1.6;
  text-align: justify;
}
.highlight-line {
  display: block;
  color: #f7a600;
  font-weight: bold;
}

.info-block {
  padding-top: 40px;
  padding-bottom: 40px;
  margin-bottom: 0;
  max-width: 900px;
  margin: 0 auto;
  font-size: 1.05rem;
  line-height: 1.7;
  color: #222;
}
.info-block + .info-block {
  margin-top: 0px;  /* reduce if needed */
}

.info-block h2 {
  font-size: 1.6rem;
  margin-top: 1.5rem;
  margin-bottom: 1.25rem;
  color: #002147;
}

.info-block ul {
  padding-left: 1.5rem;
}

.info-block ul li {
  margin-bottom: 0.5rem;
}

.otros-servicios {
  padding-top: 0 !important;
  margin-top: -1rem; /* optional fine-tuning */
}

.reservation-button-home {
  text-align: center;
  margin: 2rem 0;
}

.reservation-container {
  display: flex;
  align-items: center;
  gap: 1rem; /* spacing between phone and button */
  justify-content: center;
}

.phone-number {
  font-weight: bold;
  font-size: 1rem;
}

.phone-number i {
  margin-right: 6px;
}

/*Button on Home & Modal Pages*/
.reservation-btn {
  background-color: #002147;
  color: white;
  font-weight: bold;
  padding: 0.6rem 1.2rem;
  border-radius: 10px;
  text-decoration: none;
  font-size: 1.4rem;
  transition: background-color 0.3s ease, color 0.3s ease;
}

.reservation-btn:hover {
  background-color: #e6e6e6;
  color: #002147;
}

/* ==============================
   REVIEWS SECTION
   ============================== */
.reviews {
  background-color: #f4f4f4;
  padding: 3rem 2rem;
  text-align: center;
}
.reviews h2 {
  font-size: 1.8rem;
  color: #002147;
  margin-bottom: 2rem;
}
.reviews-container {
  display: flex;
  flex-wrap: nowrap;        /* ✅ Do not wrap to next line */
  justify-content: center;  /* ✅ Horizontally center */
  gap: 2rem;
  overflow-x: auto;         /* ✅ Allow scrolling if needed */
  padding-bottom: 1rem;
}

.review-card {
  background: white;
  width: 300px;                 /* Try 360–400px */
  max-width: 90vw;              /* Prevent overflow on small screens */
  min-height: 200px;
  padding: 1.5rem;
  border-radius: 8px;
  box-shadow: 0 4px 8px rgba(0,0,0,0.06);
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}


}
.review-card:last-child {
  flex: 1; /* Makes the last box wider */
}

.stars {
  font-size: 1.5rem;
  color: gold;
}
.review-author {
  font-weight: bold;
  margin-top: 0.5rem;
}

/* Appointment Section */
.appointment-section {
  background-color: #f4f4f4;
  padding: 2rem;
  max-width: 600px;
  margin: 4rem auto;
  border-radius: 8px;
  box-shadow: 0 4px 10px rgba(0,0,0,0.1);
  border-top: 3px solid #002147;
}
.appointment-section h2 {
  text-align: center;
  color: #002147;
  margin-bottom: 1rem;
}
.appointment-form {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}
.appointment-form label {
  font-weight: bold;
  color: #333;
}
.appointment-form input,
.appointment-form textarea {
  padding: 0.6rem;
  border: 1px solid #ccc;
  border-radius: 4px;
  font-size: 1rem;
}
.appointment-form button {
  background-color: #002147;
  color: white;
  border: none;
  padding: 0.75rem;
  border-radius: 4px;
  cursor: pointer;
  font-weight: bold;
}
.appointment-form button:hover {
  background-color: #e6e6e6;
  color: #002147
}
#reserva-form {
  scroll-margin-top: 180px; /* Adjust to your header height */
}
html {
  scroll-behavior: smooth;
}

#success-message {
  background-color: #f0f8ff;
  padding: 2rem;
  text-align: center;
  font-weight: bold;
  color: #002147;
  border-radius: 8px;
  box-shadow: 0 0 10px rgba(0,0,0,0.1);
  margin-top: 1.5rem;
}
body.contact-page #success-message {
  color: green; /* or any color you want */
}


/* ==============================
   FAQ SECTION
   ============================== */
/* Unified FAQ Styling */
.faq-section {
  width: 100%;
  background-color: #f5f5f5;
  padding: 3rem 1rem;
  margin-bottom: 0 !important;
  position: relative;
  overflow: hidden; /* Prevents rendering artifacts */
  z-index: 1; /* Ensures proper stacking */
}

.faq-content {
  max-width: 1100px;
  margin: 0 auto;
  padding: 0 1rem;
}

.faq-section h2 {
  text-align: center;
  font-size: 2rem;
  margin-bottom: 2rem;
  color: #002147;
}

.faq-item {
  max-width: 900px;
  margin: 0 auto 1.25rem;
}

.faq-question {
  width: 100%;
  text-align: left;
  background-color: #0a2342;
  color: white;
  font-size: 1.1rem;
  font-weight: bold;
  padding: 1rem 1.5rem;
  border: none;
  cursor: pointer;
  border-radius: 6px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  transition: background-color 0.3s ease;
}

.faq-question:hover {
  background-color: #0d2b58;
}

.faq-answer {
  background-color: white;
  color: #333;
  text-align: left;
  max-height: none;
  display: none;
  overflow: hidden;
  transition: max-height 0.4s ease, padding 0.3s ease;
  border: 1px solid #ddd;
  border-top: none;
  border-radius: 0 0 6px 6px;
}

.faq-answer.open {
  display: flex;
  padding: 1rem 1.5rem;
}

.faq-question .icon {
  transition: transform 0.3s ease;
  font-size: 0.9rem;
}

.faq-answer.open + .faq-question .icon {
  transform: rotate(90deg);
}

/* Unified FAQ Title Styling */
.faq-title-wrapper {
  max-width: 1100px;
  margin: 0 auto;
  padding: 0 2rem;
  text-align: center;
}

.faq-main-title {
  font-size: 2rem;
  color: #002147;
  margin-bottom: 2rem;
  /* Removed underline-related properties */
}

/* ==============================
   FOOTER
   ============================== */
footer {
  background-color: #002147;
  color: white;
  text-align: center;
  padding: 3rem 1rem 1.5rem 1rem; /* top, right, bottom, left */
}
footer .social-icons {
  margin-top: 1rem;
}
footer .social-icons a {
  color: white;
  margin: 0 0.5rem;
  color: #f7a600;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
}

/* ==============================
   POP-UP MODAL
   ============================== */
.modal {
  display: none;
  position: fixed;
  z-index: 9999;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0,0,0,0.5);
  justify-content: center;
  align-items: center;
}
.modal-content {
  background-color: #fff;
  padding: 2rem;
  border-radius: 8px;
  width: 90%;
  max-width: 500px;
  text-align: center;
  position: relative;
  box-shadow: 0 10px 20px rgba(0,0,0,0.25);
}
.modal-close {
  position: absolute;
  top: 10px;
  right: 15px;
  font-size: 1.5rem;
  font-weight: bold;
  color: #888;
  cursor: pointer;
}
.modal-close:hover {
  color: #000;
}
.modal-footer {
  margin-top: 1.5rem;
}
.btn-primary {
  background-color: #002147;
  color: white;
  padding: 0.6rem 1.2rem;
  text-decoration: none;
  border-radius: 5px;
}
.btn-primary:hover {
  background-color: #003366;
}
.dont-show {
  margin-top: 1rem;
  background: none;
  border: none;
  color: #888;
  font-size: 0.9rem;
  cursor: pointer;
}

/* ==============================
   ANIMATIONS
   ============================== */
.fade-in {
  opacity: 0;
  transform: translateY(20px);
  animation: fadeInUp 1.2s ease forwards;
}

/* Animation Keyframes */
@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translateY(30px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* Element initial state */
.scroll-trigger {
  opacity: 0;
  /* Add this if you want smooth transitions when resizing */
  transition: opacity 0.3s ease, transform 0.6s ease;
}

/* Animation class */
.scroll-trigger.animate {
  animation: fadeInUp 0.8s ease-out forwards;
}
/* ==============================
   RESPONSIVE STYLES
   ============================== */
@media (min-width: 768px) {
  .reviews-container {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 2rem;
  }
}  /* ✅ this closing brace was missing */

@media (max-width: 768px) {
  .contact-wrapper {
    flex-direction: column;
  }

  .contact-info,
  .contact-form {
    width: 100%;
  }
}


.hero-gradient-overlay {
  position: absolute;
  top: 0;
  left: 0;            /* was 30; fixed */
  width: 100%;
  height: 100% !important; /* match container height */
  background: linear-gradient(
    to right,
    rgba(255,255,255,0.95) 0%,
    rgba(255,255,255,0.85) 15%,
    rgba(255,255,255,0.6) 30%,
    rgba(255,255,255,0.2) 50%,
    rgba(255,255,255,0) 70%
  );
  z-index: 1;
}

.hero-image-container {
  position: relative;
  width: 100%;
  min-height: 90vh;      /* bigger hero */
  display: flex;
  align-items: center;
  justify-content: flex-start;
  overflow: hidden;
}

.hero-background-image {
  width: 100%;
  height: 100%;
  object-fit: cover; /* Prevents cropping distortion */
  position: absolute;
  top: 0;
  left: 0;
}

.hero-text-content {
  position: relative;
  z-index: 2;
  max-width: 600px;
  padding: 20px;
  margin-left: 5%;                  /* <-- nudge right */
  background-color: rgba(255, 255, 255, 0.8);
  border-radius: 10px;
  animation: slideInLeft 1.1s ease-out forwards;
}

@media (min-width: 1200px) {
  .hero-text-content { margin-left: 8%; }   /* a bit more on large screens */
}


.hero-text-content h1 {
  font-size: 3.3rem;
  font-weight: 800;
  margin-bottom: 15px;
}

.hero-text-content .highlight {
  font-size: 1.7rem;
  font-weight: bold;
  color: #f7a600;
  margin-bottom: 15px;
}

.hero-text-content .description {
  font-size: 1.3rem;
  color: black;
  line-height: 1.6;
  text-align: justify;
}

@keyframes slideInLeft {
  0% {
    opacity: 0;
    transform: translateX(-50px);
  }
  100% {
    opacity: 1;
    transform: translateX(0);
  }
}

.hero-text-content {
  animation: slideInLeft 1.1s ease-out forwards;
}



/* Icon Services Section */
.icon-services {
  display: flex;
  justify-content: space-around;
  align-items: center;
  padding: 2rem 4rem;
  background-color: #f8f8f8;
  flex-wrap: wrap;
  gap: 2rem;
  text-align: center;
}

.service-icon img {
  width: 150px;
  height: 150px;
  filter: grayscale(100%);
  transition: filter 0.3s ease;
  margin-bottom: 1rem;
}

.service-icon:hover img {
  filter: grayscale(0%);
}

.service-icon p {
  margin-top: 2rem;
  font-weight: bold;
  color: #e69c05;
  font-size: 1.3rem;
}

.counter-section {
  display: flex;
  justify-content: space-around;
  flex-wrap: wrap;
  background-color: #f9f9f9;
  padding: 4rem 2rem;
  text-align: center;
  text-size: 2.5rem;
  font-weight: bold;

}
.counter-box {
  margin: 1rem;
}

.counter {
  font-size: 3rem;
  font-weight: bold;
  color: #e4572e; /* orange accent */
  margin-bottom: 0.5rem;
}

/* Contact Section Bottom */
.contact-section {
  display: flex;
  gap: 0;
  padding: 0rem 0rem;
  background-color: #fff;
}

.contact-left {
  flex: 6;
  background-color: #f0f6ff;
  padding: 2rem;
}

.contact-left h2 {
  font-size: 1.8rem;
  font-weight: bold;
  color: #002147;
  margin-bottom: 0.5rem;
}

.contact-left p {
  margin-bottom: 2rem;
  color: #333;
  font-size: 1.3rem;
}

.contact-info-map {
  display: flex;
  gap: 2rem;
}
.map-box iframe {
  width: 100%;
  height: 300px; /* Adjust to your preference */
  margin-top: 2rem;
  border: none;
}


.contact-info-box,
.map-box {
  flex: 1;
}

.contact-info-box h3,
.map-box h3 {
  font-size: 1.1rem;
  font-weight: bold;
  color: #002147;
  margin-bottom: 0.3rem;
  display: inline-block;
  padding-bottom: 0.2rem;
}

.contact-info-box p {
  font-size: 0.95rem;
  line-height: 1.4;
  color: #222;
  margin-bottom: 1rem;
}

.contact-info-box a {
  color: #5e4b8b;
  text-decoration: underline;
}

.contact-right {
  flex: 4;
  background-color: #f8f9fa;
  padding: 2rem;
  border-radius: 0 0 8px 8px;
}

.contact-right h3 {
  font-size: 1.3rem;
  color: #002147;
  margin-bottom: 1rem;
  text-align: center;
}

.contact-right label {
  font-weight: bold;
  margin-top: 1rem;
  display: block;
  color: #444;
}

.contact-right input,
.contact-right textarea {
  width: 100%;
  padding: 0.7rem;
  font-size: 1rem;
  border-radius: 5px;
  border: 1px solid #ccc;
  margin-top: 0.3rem;
}

.contact-right textarea {
  height: 100px;
  resize: none;
}

.contact-right button {
  margin-top: 1.2rem;
  padding: 0.75rem;
  background-color: #002147;
  color: #fff;
  border: none;
  font-weight: bold;
  border-radius: 5px;
  cursor: pointer;
  width: 100%;
  transition: background 0.3s ease;
}

.contact-right button:hover {
  background-color: #003f7d;
}
body.home .contact-right #success-message {
  margin-top: 1.5rem;
}
/* ==============================
   About Us page
   ============================== */
.about-layout {
  display: flex;
  padding: 2rem;
  gap: 2rem;
}

/* About Page Layout Adjustments */
.about-main {
  max-width: 1200px;
  margin: 0 auto;
  padding: 2rem;
  overflow: auto;
}

/* Full-width FAQ section */
.full-width-faq {
  width: 100vw;
  position: relative;
  left: 50%;
  right: 50%;
  margin-left: -50vw;
  margin-right: -50vw;
  background: #f5f5f5;
  padding: 2rem;
  margin-top: 3rem;
}

.full-width-faq .faq-content {
  max-width: 1000px;
  margin: 0 auto;
  padding: 0 2rem;
}


/* Main content area */
.about-main {
  flex: 1;
  min-width: 0; /* Allows proper flexbox shrinking */
  font-size: 18px;
  margin-top: -3rem;
}

/* FAQ Section adjustments for about page */

/* === Fix About page FAQ full-bleed === */
.about-page .full-width-faq {
  width: 100vw !important;
  position: relative !important;
  left: 50% !important;
  right: 50% !important;
  margin-left: -50vw !important;
  margin-right: -50vw !important;
  padding: 0 !important;   /* no inner gap */
}

/* Remove side padding on the gray band itself */
.about-page .faq-section {
  padding: 2rem 0 0rem 3rem!important;  /* no left/right padding */
}

/* Keep content nicely centered inside */
.about-page .faq-content {
  max-width: 1100px !important;
  margin: 0 auto !important;
  padding: 0!important;       /* safe inner gutters for text */
}

/* Ensure footer has no top margin */
footer {
  margin-top: -2rem !important;
}


/* For mobile */
@media (max-width: 768px) {
  .about-page .full-width-faq {
    margin-top: 1.5rem;
    margin-bottom: 1.5rem;
  }
}

.about-main {
  max-width: 1000px; /* or higher */
}

.mission-section {
  display: flex;
  justify-content: space-between;
  gap: 3rem;
  margin-bottom: 3rem;
  align-items: flex-top;  /* ✅ aligns bottom edges */
  flex-wrap: wrap;
  overflow:visible;
}


.mission-text {
  flex: 2.2; /* ⬆ increase from 2 */
  min-width: 350px; /* optional, but gives more room */
}

.mission-image {
  display: flex;
  justify-content: flex-end;
  align-items: flex-start;
  width: 100%;
  margin-top: -28rem;
}

.mission-image-frame {
  position: relative;
  display: inline-block;
  width: max-content; /* ✅ ensures no vertical/horizontal overflow */
  height: auto;
}

.mission-image-frame::after {
  content: '';
  position: absolute;
  top: 20px;
  left: 20px;
  width: 100%;
  height: 100%;
  background-color: #002147;
  z-index: -1;
  border-radius: 8px;
}

.mission-image-frame img {
  display: block;
  width: 100%;
  max-width: 500px;
  height: auto;
  border-radius: 8px;
}

.about-main h2 {
  margin-top: 2.5rem;
  margin-bottom: 1rem;
  color: #002147;
}
@media (max-width: 768px) {
  .mission-section {
    flex-direction: column;
  }

  .mission-text,
  .mission-image {
    width: 100%;
  }

  .mission-image {
    margin-top: 2rem;
  }

  .mission-image img {
    max-width: 100%;
    height: auto;
  }
}

.ceo-section {
  display: flex;
  flex-wrap: wrap;
  gap: 30px; /* Adjust this value (was 2rem/32px) */
}
.ceo-image-frame {
  flex: 0;
  min-width: 380px;
  max-width: 400px;
  position: relative;
  display: inline-block;
  margin-left: -30px; /* Reduced from -30px */
  margin-top: -15px; /* Reduced from -30px */
  margin-right: 25px;
  margin-bottom: 4rem;
}

.ceo-image-frame::after {
  content: '';
  position: absolute;
  top: 20px;   /* adjust for spacing */
  left: 20px;  /* adjust for spacing */
  width: 100%;
  height: 100%;
  background-color: #002147; /* navy */
  z-index: -1;
  border-radius: 8px;
}


.ceo-image-frame img {
  width: 100%;
  height: auto;
  border-radius: 8px;
  object-fit: cover;
}

.ceo-text {
  flex: 3; /* Changed from flex: 2 to give more space to image */
  min-width: 530px;
  max-width: 600px; /* Add this to limit text width */
  margin-left: 0px; /* Adds space between image and text */
  margin-top: -70px;
}

.ceo-text h2 {
  color: #002147;
  margin-bottom: 1rem;
}

.ceo-text ul {
  padding-left: 1rem;
  margin-top: 1rem;
}

.ceo-text p {
  margin-bottom: 1rem; /* Adjust value as needed */
}



.idm-help-textbox-horizontal {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: stretch;
  background-color: #e0f2ff;
  overflow: hidden;
  margin: 2rem auto;
  max-width: 100%;
  padding: 0;
  margin-top: 0;
  margin-bottom: 0;
}

.idm-help-text-content {
  flex: 1 1 60%;
  padding: 2rem;
  font-size: 1.2rem;
  color: black;
  min-width: 300px;
}

.idm-help-text-content h2 {
  margin-top: 0;
  font-size: 3rem;
  color: #002147;
}

.idm-help-text-content h3 {
  margin-top: 0.5rem;
  font-size: 1.44rem;
  color: #00517d;
}

.idm-help-text-content ul {
  margin-top: 1rem;
  padding-left: 1.5rem;
  list-style-type: disc;
}

.idm-help-image-bg {
  flex: 1 1 35%;
  transform: skewX(-20deg);
  overflow: hidden;
  max-width: 420px;
  height: 100%;           /* ⬅️ Fill the parent's height */
  display: flex;          /* Align the image inside */
  align-items: stretch;
}


.idm-help-image-bg img {
  transform: skewX(20deg);
  width: 100%;
  height: 100%;          /* ⬅️ Match the container height */
  object-fit: cover;     /* ⬅️ Prevent distortion */
  display: block;
}

.cta-link {
  margin-top: 1rem;
  font-weight: bold;
}

.cta-link a {
  color: #e4572e;
  text-decoration: none;
  border-bottom: 2px solid #00517d;
  transition: color 0.3s, border-color 0.3s;
}

.cta-link a:hover {
  color: #002147;
  border-color: #00517d;
}

/* Animation keyframes */
@keyframes fadeSlideUp {
  0% {
    opacity: 0;
    transform: translateY(40px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

.scroll-animate {
  opacity: 0;
  transform: translateY(40px);
}

.scroll-animate.visible {
  animation: fadeSlideUp 0.8s ease-out forwards;
}
/* ==============================
   UTILITY CLASSES
   ============================== */
.underline {
  position: relative;
  display: inline-block;
  padding-bottom: 5px;
}

.underline::after {
  content: '';
  position: absolute;
  left: 0;
  bottom: 0;
  height: 3px;
  width: 100%;
  background-color: #f7a600;
  border-radius: 2px;
}
/* Add this to your styles.css */
body.about-page #nav-nosotros:hover,
body.about-page #nav-nosotros.active {
  color: #f7a600 !important; /* Yellow color */
}


/* Add to styles.css */
body.about-page #nav-nosotros {
  color: #f7a600 !important; /* Force yellow color */
  font-weight: bold;
  position: relative;
  max-width: 1100px;
  margin: 0 auto;
  overflow-x: hidden;
}

/* ==============================
   IMAGE ANIMATIONS FOR ABOUT PAGE
   ============================== */
/* Always show images by default */
.about-page .about-main img {
  opacity: 1;
}
.navbar .logo img {
  animation: none !important;
  opacity: 1 !important;
  transform: none !important;
}
@keyframes fadeIn {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: none; }
}

/* Only images you mark with .fx-fade will animate */
.about-page .about-main img.fx-fade {
  opacity: 0;
  animation: fadeIn 700ms ease forwards;
}


/* Disable for logo */
.about-page .logo img {
  animation: none !important;
  opacity: 1 !important;
  transform: none !important;
}
/* ==============================
   MOBILE/TABLET OVERRIDES (SAFE)
   ============================== */

/* Tablets and down */
@media (max-width: 1024px) {
  .navbar { padding: .75rem 1rem; gap: .75rem; }
  .nav-left { gap: 1rem; }
  .nav-left .logo img { height: 70px; }
  .menu-links a { font-size: 1.1rem; }
  .reservation-button { font-size: 1.05rem; padding: .4rem .75rem; }
  .lang-dropdown select { font-size: .95rem; }
  body { padding-top: 72px; } /* account for fixed navbar */
}

/* Phones (most changes go here) */
@media (max-width: 768px) {
  /* Nav stacks */
  .navbar {
    flex-wrap: wrap;
    justify-content: space-between;
  }
  .nav-left { width: 100%; justify-content: space-between; }
  .menu-links {
    width: 100%;
    display: flex;
    flex-wrap: wrap;
    gap: .75rem 1rem;
    margin-top: .5rem;
  }
  .menu-links a { font-size: 1rem; }
  .menu-right { display: none; }  /* hide desktop right side on phones */
  .reservation-container { flex-direction: column; gap: .5rem; }
  .phone-number { font-size: .95rem;}

  /* Hero */
  .hero-image-container { height: 420px !important; }
  .hero-gradient-overlay { height: 480px !important; }
  .hero-text-content {
    position: static;            /* stop overlapping on small screens */
    transform: none;
    max-width: 92%;
    margin: 1rem auto 0;
    padding: 1rem;
    min-height: auto;
  }
  .hero-text-content h1 { font-size: 2rem; }
  .hero-text-content .highlight { font-size: 1.2rem; }
  .hero-text-content .description { font-size: 1rem; text-align: left; }

  /* Services icons */
  .icon-services { padding: 1.25rem; gap: 1.25rem; }
  .service-icon img { width: 96px; height: 96px; }
  .service-icon p { margin-top: .75rem; font-size: 1.05rem; }

  /* Counters */
  .counter-section { padding: 2rem 1rem; }
  .counter { font-size: 2.2rem; }

  /* Reviews */
  .reviews { padding: 2rem 1rem; }
  .reviews-container { gap: 1rem; }
  .review-card { width: 85vw; }

  /* Help textbox: remove skew & stack */
  .idm-help-textbox-horizontal { flex-direction: column; }
  .idm-help-image-bg { transform: none; max-width: 100%; }
  .idm-help-image-bg img { transform: none; height: 240px; }
  .idm-help-text-content { padding: 1.25rem; font-size: 1.05rem; }
  .idm-help-text-content h2 { font-size: 1.8rem; }
  .idm-help-text-content h3 { font-size: 1.15rem; }

  /* Contact section stacks */
  .contact-section { flex-direction: column; }
  .contact-left, .contact-right { padding: 1.25rem; }
  .contact-left h2 { font-size: 1.5rem; }
  .contact-left p { font-size: 1.05rem; }
  .contact-info-map { flex-direction: column; gap: 1rem; }
  .map-box iframe { height: 220px; }

  /* Info blocks / content widths */
  .info-block { padding: 1.25rem 1rem; font-size: 1rem; }
  .info-block h2 { font-size: 1.3rem; }

  /* FAQ */
  .faq-section { padding: 2rem 1rem; }
  .faq-main-title { font-size: 1.6rem; }
  .faq-question { font-size: 1rem; padding: .85rem 1rem; }
  .faq-answer.open { padding: .85rem 1rem; }

  /* About page layout fixes */
  .about-main { padding: 1.25rem; margin-top: 0; }
  .mission-section { flex-direction: column; gap: 1.25rem; }
  .mission-text { min-width: 0; }
  .mission-image { margin-top: 0; width: 100%; justify-content: center; }
  .mission-image-frame img { max-width: 100%; }

  .ceo-section { gap: 1rem; }
  .ceo-image-frame {
    min-width: 0; max-width: 100%;
    margin: 0 auto 1rem;
  }
  .ceo-image-frame img { height: auto; max-width: 100%; }
  .ceo-text { min-width: 0; max-width: 100%; margin-top: 0; }
  .ceo-shadow-wrapper { margin-bottom: 1rem; }
  .contact-section { padding-bottom: 1.25rem; }
  footer { margin-top: 1.5rem; }

/* Small phones */
@media (max-width: 480px) {
  .nav-left .logo img { height: 56px; }
  body { padding-top: 66px; }
  .reservation-button { font-size: .95rem; padding: .35rem .7rem; }
  .lang-dropdown select { font-size: .9rem; }
  .hero-image-container { height: 360px !important; }
  .hero-gradient-overlay { height: 420px !important; }
  .hero-text-content h1 { font-size: 1.7rem; }
  .hero-text-content .highlight { font-size: 1.05rem; }
  .service-icon img { width: 84px; height: 84px; }
  .contact-right button { padding: .65rem; }
  #reserva-form { scroll-margin-top: 120px; } /* smaller header on tiny screens */
}

@media (max-width: 768px) {
  .faq-answer.open {
    max-height: 2000px; /* plenty of space for wrapped text */
  }
}

.form-notice {
  background-color: #ffe5e5;
  border: 1px solid #ff4d4d;
  padding: 12px;
  margin-bottom: 15px;
  border-radius: 6px;
  text-align: center;
}

.form-notice p {
  color: black;
  font-weight: bold;
  margin: 0;
  line-height: 1.5;
}

.form-notice a {
  color: black;
  text-decoration: underline;
}
/* Full-bleed gray band that meets the footer (EN + ES) */
/* Full-bleed FAQ band (EN + ES), no seams above the footer */
.full-width-faq{
  width:100vw;
  position:relative;
  left:50%; right:50%;
  margin-left:-50vw; margin-right:-50vw;
  background:#f5f5f5;
  padding:0 !important;          /* no padding on the band itself */
  margin:0 !important;           /* no margins that could create gaps */
  display:flow-root;             /* prevent margin-collapsing */
}

/* Put all spacing INSIDE the gray band */
.full-width-faq .faq-section{
  background:transparent;
  margin:0;
  padding:3rem 0 30px !important;  /* bottom 30px = gray buffer before footer */
  overflow:visible;                 /* don't clip anything */
}

/* Center content; keep side gutters on content only */
.full-width-faq .faq-content{
  max-width:1100px;
  margin:0 auto;
  padding:0 1rem;
}

/* Whatever follows the FAQ band (usually the footer) must not add a white gap */
.full-width-faq + *{
  margin-top:0 !important;
  padding-top:0 !important;
}

/* ES/EN: fix CEO navy frame overflow + keep a clean portrait ratio */
.ceo-image-frame { position: relative; }

.ceo-image-frame::after {
  content: "";
  position: absolute;
  /* keep the shadow INSIDE the frame instead of overflowing */
  top: 20px; 
  left: 20px; 
  right: 0; 
  bottom: 0; 
  background: #002147;
  border-radius: 8px;
  z-index: -1;
}

/* optional but recommended: consistent portrait crop */
.ceo-image-frame img {
  width: 100%;
  aspect-ratio: 3 / 4;  /* change to 4/3 or 1/1 if you prefer */
  object-fit: cover;
  border-radius: 8px;
  display: block;
}

/* ensure layout stays side-by-side and tidy */
.ceo-section {
  display: flex;
  flex-wrap: wrap;
  gap: 30px;
  align-items: flex-start;
}

/* === About: unify container + CEO layout (ES/EN) === */
.about-main{
  max-width:1100px; margin:0 auto; padding:2rem; font-size:18px;
  margin-top:0 !important;   /* cancel the -3rem version earlier */
}

/* CEO block */
.ceo-section{
  display:flex; flex-wrap:wrap; align-items:flex-start; gap:30px;
}

/* Image + navy frame (same look as EN) */
.ceo-image-frame{
  position:relative; min-width:380px; max-width:400px;
  margin:0 25px 2rem -30px;   /* slight left pull like EN */
}
.ceo-image-frame::after{
  content:""; position:absolute; top:20px; left:20px; right:0; bottom:0;
  background:#002147; border-radius:8px; z-index:-1;
}
.ceo-image-frame img{
  display:block; width:100%; aspect-ratio:3/4; object-fit:cover; border-radius:8px;
}

/* Text column */
.ceo-text{ flex:1; max-width:600px; margin:0; }
.ceo-text h2{ margin-top:0; }   /* align heading with top of photo */


/* ==============================
   Mobile & Tablet Optimization Overrides + Scroll Animation
   ============================== */

/* Animation keyframes */
@keyframes heroTextPop {
  0% {
    opacity: 0;
    transform: scale(0.95) translateX(-10px);
  }
  100% {
    opacity: 1;
    transform: scale(1) translateX(0);
  }
}

/* Prepare hero text for scroll animation */
.hero-text-content {
  opacity: 0;
  transform: scale(0.95) translateX(-10px);
  transition: opacity 0.3s ease-out, transform 0.3s ease-out;
}

/* Triggered animation class */
.hero-text-visible {
  animation: heroTextPop 0.9s ease-out forwards;
}

/* Mobile: ≤767px */
@media (max-width: 767px) {
  /* Hero image taller */
  .hero-image-container {
    height: 360px !important;
  }

  /* Hero text adjustments */
  .hero-text-content {
    margin-left: 5% !important;
    max-width: 92% !important;
  }

  /* Navbar stacking */
  .menu-links, .menu-right {
    width: 100% !important;
    justify-content: center !important;
    flex-wrap: wrap !important;
  }

  /* Service icons stacking */
  .icon-services {
    flex-direction: column !important;
    gap: 1.25rem !important;
  }

  /* Contact section stacked */
  .contact-section {
    flex-direction: column !important;
  }
  .contact-left, .contact-right {
    width: 100% !important;
  }

  /* FAQ full width */
  .faq-section {
    padding: 1.5rem 1rem !important;
  }

  /* Appointment form touch-friendly */
  .appointment-section {
    padding: 1.5rem 1rem !important;
  }
}

/* Tablet: 768–1023px */
@media (min-width: 768px) and (max-width: 1023px) {
  /* Hero image slightly taller */
  .hero-image-container {
    height: 420px !important;
  }

  /* Hero text adjustments */
  .hero-text-content {
    margin-left: 6% !important;
    max-width: 85% !important;
  }

  /* Navbar alignment */
  .menu-links, .menu-right {
    flex-wrap: wrap !important;
    gap: 1rem !important;
  }

  /* Service icons compact */
  .icon-services {
    gap: 1.5rem !important;
    flex-wrap: wrap !important;
  }

  /* Contact section balanced */
  .contact-left {
    flex: 6 !important;
  }
  .contact-right {
    flex: 4 !important;
  }

  /* FAQ spacing adjusted */
  .faq-section {
    padding: 2rem 1rem !important;
  }
}

/* Standardize footer spacing across all pages */
main { padding-bottom: 2.5rem; }
main > :last-child { margin-bottom: 0; }   /* last section won't push the footer down */
footer { margin-top: 2.5rem; }             /* consistent top gap above footer */

/* Stop margin-collapsing on common containers */
.full-width-faq,
.about-main,
.mission-section,
.ceo-section { overflow: auto; }            /* creates a new block formatting context */


body.about-page footer { margin-top: -3rem !important;
                       padding: 1.25rem;}
body.about-page .about-main { margin-top: 0 !important; }

/* --- About page: bring bullets back --- */
body.about-page .mission-text ul,
body.about-page .ceo-text ul {
  list-style: disc;               /* ensure bullets */
  list-style-position: outside;   /* classic look */
  padding-left: 1.25rem;          /* room for marker */
  margin-left: 0;
}

/* Don't clip list markers on About */
body.about-page .mission-section,
body.about-page .ceo-section {
  overflow: visible !important;   /* override earlier overflow:auto */
}

/* Hamburger menu: 3 horizontal lines */
.nav-toggle {
  display: none;
  background: transparent;
  border: 0;
  width: 42px;
  height: 42px;
  padding: 0;
  margin-left: .25rem;
  border-radius: 8px;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  flex-direction: column; /* stack bars vertically */
}

.nav-toggle .bar {
  display: block;
  width: 26px;
  height: 3px;
  margin: 4px 0; /* space between lines */
  background: #fff; /* white lines */
  border-radius: 2px;
}


/* Mobile: collapse menu by default */
@media (max-width: 768px) {
  .nav-toggle { display: inline-flex; }

  .navbar .menu-links {
    display: none !important;
    position: absolute; top: 100%; left: 0; right: 0;
    background: #002147;
    flex-direction: column;
    gap: 0;
    padding: 0rem 1rem 1rem;
    border-bottom: 1px solid rgba(255,255,255,.12);
    z-index: 1001;
    margin-top: 0;
  }
  .navbar .menu-links a {
    padding: .7rem 0;
    font-size: 1.05rem;
    border-top: 1px solid rgba(255,255,255,.08);
  }
.nav-left { width: 100%; justify-content: space-between; gap: .5rem; }

.nav-middle-mobile {
  flex: 1;                /* lets it fill the space between logo & hamburger */
  align-items: center;
  text-align: center;
}

.nav-middle-mobile .phone-number { white-space: nowrap; 
                                 color: #fff !important;}

.nav-middle-mobile .reservation-button {
  font-size: 0.8rem;
  padding: 0.3rem 0.6rem;
}

  }

  /* Shown only when toggled */
  .navbar .menu-links.is-open { display: flex !important; }

  /* Keep the bar compact on phones */
  .navbar { padding: .5rem 1rem; }
  .nav-left .logo img { height: 60px; }
}

/* Let the dropdown render outside the bar if needed */
.navbar { overflow: visible; }
.nav-left { flex: 1; }          /* pushes menu to the left, leaves room on right */
.menu-right { margin-left: auto; }

@media (min-width: 769px) {
  .nav-toggle { display: none !important; }
  .navbar .menu-links {
    display: flex !important;
    position: static;
    flex-direction: row;
    gap: 1.5rem;
    padding: 0;
    border: 0;
  }
}

   /* Default: hide middle section on desktop */
.nav-middle-mobile {
  display: none;
}

/* Show on mobile and center vertically */
@media (max-width: 768px) {
  .navbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
  }

  .nav-left, .nav-middle-mobile, .nav-toggle {
    display: flex;
    align-items: center;
  }

  .nav-middle-mobile {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.25rem;
    font-size: 0.9rem;
  }

  .nav-middle-mobile .reservation-button {
    font-size: 0.8rem;
    padding: 0.3rem 0.6rem;
  }

  .phone-number {
    color: #fff;
    font-size: 0.85rem;
    white-space: nowrap;
  }
}

/* Default/desktop: keep right block, hide middle block */
.nav-middle-mobile { display: none !important; }

/* ===== NAV visibility final overrides ===== */

/* Desktop (>=769px): show right block, hide middle block */
@media (min-width: 769px) {
  .nav-middle-mobile { display: none !important; }
  .menu-right { display: flex !important; }
}

/* Mobile (<=768px): show middle block, hide right block */
@media (max-width: 768px) {
  .nav-middle-mobile { display: flex !important; }
  .menu-right { display: none !important; }
}

/* ===== Fix mobile menu alignment (About page "Nosotros") ===== */
@media (max-width: 900px) {
  .menu-links a {
    display: block;
    position: relative;
    padding: 16px 24px !important;
    line-height: 1.2;
    margin: 0 !important;
  }

  /* Remove any active-state bar that sits above the link (causes misalignment) */
  .menu-links a::before {
    display: none !important;
    content: none !important;
  }
} /* <-- correct single closing brace */

/* Keep this outside the media query so it works on desktop */
body.about-page #nav-nosotros:hover,
body.about-page #nav-nosotros.active,
body.about-page #nav-about:hover,
body.about-page #nav-about.active {
  color: #f7a600 !important;
}


/* About page: ensure the About link stays yellow when active */
body.about-page #nav-about.active,
body.about-page #nav-about:hover,
/* (Spanish About too, for parity) */
body.about-page #nav-nosotros.active,
body.about-page #nav-nosotros:hover {
  color: #f7a600 !important;
}

/* accessibly hide label text */
.sr-only {
  position: absolute !important;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0);
  white-space: nowrap; border: 0;
}


/* place the mobile switcher neatly inside the drawer */
.menu-lang-mobile { padding: 12px 16px; }

/* Show the mobile switcher only on small screens */
@media (max-width: 900px) {
  .menu-lang-mobile { display: block; }
  .menu-right .lang-dropdown { display: none; } /* hide desktop switcher on mobile */
}

/* Keep desktop switcher hidden only on small screens (visible otherwise) */
@media (min-width: 901px) {
  .menu-lang-mobile { display: none; }
}


/* keep the logo from shrinking in the flex row */
.nav-left .logo { flex: 0 0 auto; }
.nav-left .logo img {
  display: block;
  height: 90px;     /* desktop */
  width: auto;
  transition: none; /* avoid flicker from transitions */
}
@media (max-width: 768px) {
  .nav-left .logo img { height: 60px; }
}

.idm-modal__img {
  display: block;
  max-width: 100%;
  height: auto;
}

/* Remove red background from Spanish index form on mobile */
@media (max-width: 768px) {
  .contact-section {
    background-color: transparent !important;
  }
}

/* Navbar phone links = white */
.navbar a[href^="tel"],
.nav-middle-mobile a[href^="tel"] {
  color: white !important;
}

/* Contact section + footer phone links on home = black */
body.home .contact-section a[href^="tel"],
body.home footer a[href^="tel"] {
  color: black !important;
}
















