/* Reset and Base Styles */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

body {
  font-family: "Montserrat", -apple-system, BlinkMacSystemFont, "Segoe UI",
    Roboto, sans-serif;
  line-height: 1.5;
  color: #333;
  overflow-x: hidden;
}

/* Apply Montserrat font family globally */
* {
  font-family: "Montserrat", -apple-system, BlinkMacSystemFont, "Segoe UI",
    Roboto, sans-serif;
}

a {
  outline: none;
}

a:focus,
a:active {
  outline: none;
  box-shadow: none;
}

/* Utility Classes */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* Banner Strip */
.banner-strip {
  display: flex;
  gap: 10px;
  width: 100%;
  justify-content: center;
  align-items: center;
  padding: 8px 20px;
  font-size: 12px;
  text-align: center;
  color: white;
  background-color: #18181b;
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 10000;
  transition: transform 0.3s ease;
}

.banner-strip.hidden {
  transform: translateY(-100%);
}

.banner-strip p {
  margin: 0;
  line-height: 1.4;
}

.banner-strip .banner-text {
  font-weight: 600;
  color: white;
  font-size: 12px;
}

.banner-strip .banner-link {
  font-weight: 800;
  text-decoration: underline;
  color: white;
  transition: opacity 0.2s ease;
  font-size: 12px;
}

.banner-strip .banner-link:hover {
  opacity: 0.8;
}

@media (max-width: 768px) {
  .banner-strip {
    padding: 8px 20px;
    font-size: 11px;
  }
}

/* Blur Overlay */
.blur-overlay {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.2);
  backdrop-filter: blur(4px);
  z-index: 9997;
  opacity: 0;
  visibility: hidden;
  transition: all 0.3s ease;
}

.blur-overlay.active {
  opacity: 1;
  visibility: visible;
}

.blur-overlay.mobile-active {
  z-index: 9997;
  top: 0;
}

.blur-overlay.desktop-active {
  z-index: 9998;
  top: 80px;
}

/* Mobile Header */
.mobile-header {
  display: block;
  position: sticky;
  top: 40px;
  left: 0;
  right: 0;
  z-index: 9999;
  width: 100%;
  background: white;
  transition: all 0.3s ease;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
}

.mobile-header.banner-hidden {
  top: 0;
}

.mobile-header.scrolled {
  box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15);
}

.mobile-header.menu-open {
  z-index: 9996;
}

.mobile-container {
  max-width: 100%;
  margin: 0 auto;
  padding: 0 16px;
}

.mobile-content {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 64px;
}

.mobile-logo {
  flex-shrink: 0;
  text-decoration: none;
}

.mobile-logo img {
  height: 32px;
  width: auto;
}

.mobile-menu-toggle {
  background: none;
  border: none;
  padding: 8px;
  border-radius: 8px;
  cursor: pointer;
  transition: background-color 0.2s ease;
}

.mobile-menu-toggle:hover {
  background-color: #f3f4f6;
}

.mobile-menu-toggle .close-icon {
  display: none;
}

.mobile-menu-toggle.active .hamburger-icon {
  display: none;
}

.mobile-menu-toggle.active .close-icon {
  display: block;
}

.mobile-menu-toggle svg {
  width: 24px;
  height: 24px;
  color: #374151;
}

/* Mobile Drawer */
.mobile-drawer {
  position: fixed;
  top: 0;
  right: 0;
  height: 100vh;
  width: 320px;
  background: white;
  box-shadow: -10px 0 25px rgba(0, 0, 0, 0.15);
  transform: translateX(100%);
  transition: transform 0.3s ease-in-out;
  z-index: 9998;
  display: flex;
  flex-direction: column;
}

.mobile-drawer.active {
  transform: translateX(0);
}

.mobile-drawer-header {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 24px;
  border-bottom: 1px solid #f3f4f6;
}

.mobile-drawer-header img {
  height: 28px;
  width: auto;
}

.mobile-drawer-close {
  background: none;
  border: none;
  padding: 8px;
  border-radius: 8px;
  cursor: pointer;
  transition: background-color 0.2s ease;
}

.mobile-drawer-close:hover {
  background-color: #f3f4f6;
}

.mobile-drawer-close svg {
  width: 20px;
  height: 20px;
  color: #374151;
}

.mobile-nav-content {
  flex: 1;
  overflow-y: auto;
  overscroll-behavior: contain;
}

.mobile-menu-items {
  padding: 24px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

/* Mobile Menu Items */
.mobile-menu-item {
  border-bottom: 1px solid #f3f4f6;
}

.mobile-menu-item:last-child {
  border-bottom: none;
}

.mobile-menu-link {
  display: block;
  padding: 16px 8px;
  text-decoration: none;
  font-size: 16px;
  font-weight: 500;
  color: #111827;
  border-radius: 8px;
  transition: background-color 0.2s ease;
}

.mobile-menu-link:hover {
  background-color: #f9fafb;
}

/* Mobile Accordion */
.mobile-accordion-item {
  border-bottom: 1px solid #f3f4f6;
}

.mobile-accordion-item:last-child {
  border-bottom: none;
}

.mobile-accordion-button {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 8px;
  text-align: left;
  background: none;
  border: none;
  cursor: pointer;
  border-radius: 8px;
  transition: background-color 0.2s ease;
  font-size: 16px;
  font-weight: 500;
  color: #111827;
}

.mobile-accordion-button:hover {
  background-color: #f9fafb;
}

.mobile-accordion-button .accordion-arrow {
  width: 20px;
  height: 20px;
  color: #6b7280;
  transition: transform 0.3s ease;
}

.mobile-accordion-button.active .accordion-arrow {
  transform: rotate(180deg);
}

.mobile-accordion-content {
  max-height: 0;
  opacity: 0;
  overflow: hidden;
  transition: all 0.3s ease-in-out;
}

.mobile-accordion-content.active {
  max-height: 500px;
  opacity: 1;
}

.mobile-accordion-inner {
  padding: 0 0 16px 16px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

/* Mobile Service Categories */
.mobile-service-category {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.mobile-service-header {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 8px 0;
}

.mobile-service-icon {
  width: 32px;
  height: 32px;
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
}

.mobile-service-title {
  font-size: 14px;
  font-weight: 600;
  color: #111827;
}

.mobile-service-links {
  margin-left: 44px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.mobile-service-links a {
  display: block;
  font-size: 14px;
  color: #6b7280;
  text-decoration: none;
  padding: 4px 0;
  transition: color 0.2s ease;
  white-space: pre-line;
}

.mobile-service-links a:hover {
  color: #000;
}

/* Mobile Resource Items */
.mobile-resource-item {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 8px 0;
  border-radius: 8px;
  transition: background-color 0.2s ease;
}

.mobile-resource-item:hover {
  background-color: #f9fafb;
}

.mobile-resource-item a {
  display: flex;
  align-items: center;
  gap: 16px;
  text-decoration: none;
  color: #111827;
  font-size: 14px;
  font-weight: 500;
  width: 100%;
}

.mobile-resource-icon {
  width: 32px;
  height: 32px;
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
}

/* Desktop Header */
.desktop-header {
  display: none;
  position: sticky;
  top: 40px;
  left: 0;
  right: 0;
  z-index: 9999;
  width: 100%;
  background: white;
  transition: all 0.3s ease;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
}

.desktop-header.banner-hidden {
  top: 0;
}

.desktop-header.scrolled {
  box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15);
}

.desktop-container {
  max-width: 1440px;
  margin: 0 auto;
  padding: 0 24px;
}

.desktop-content {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 80px;
}

.desktop-logo {
  flex-shrink: 0;
  text-decoration: none;
}

.desktop-logo img {
  height: 48px;
  width: auto;
}

.desktop-nav-menu {
  display: flex;
  align-items: center;
}

/* Navigation Items */
.nav-item {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  height: 80px;
}

.nav-button,
.nav-link {
  display: flex;
  align-items: center;
  gap: 4px;
  padding: 8px 16px;
  text-decoration: none;
  color: #374151;
  font-weight: 500;
  font-size: 14px;
  border: none;
  background: none;
  cursor: pointer;
  border-radius: 8px;
  transition: all 0.2s ease;
}

.nav-button:hover,
.nav-link:hover {
  color: #000;
  font-weight: 700;
  background-color: rgba(255, 218, 48, 0.11);
}

.nav-text {
  position: relative;
  display: inline-block;
}

.nav-text-invisible {
  visibility: hidden;
  font-weight: 700;
  white-space: nowrap;
}

.nav-text-visible {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  transition: all 0.2s ease;
  white-space: nowrap;
}

.nav-arrow {
  width: 16px;
  height: 16px;
  transition: transform 0.2s ease;
}

.nav-item.active .nav-arrow {
  transform: rotate(180deg);
}

/* Desktop Dropdowns */
.desktop-dropdown {
  position: fixed;
  left: 50%;
  transform: translateX(-50%);
  background: white;
  border-radius: 0 0 24px 24px;
  box-shadow: 0 20px 25px rgba(128, 128, 128, 0.35);
  z-index: 50;
  opacity: 0;
  visibility: hidden;
  transition: all 0.3s ease;
  top: 120px;
}

.desktop-dropdown.banner-hidden {
  top: 80px;
}

.desktop-dropdown.active {
  opacity: 1;
  visibility: visible;
}

/* Services Dropdown */
.services-dropdown {
  width: 100vw;
}

.services-dropdown-content {
  padding: 56px 60px;
  display: flex;
  gap: 105px;
}

.services-categories {
  display: flex;
  justify-content: space-between;
  width: 100%;
}

.service-category {
  display: flex;
  gap: 18px;
}

.service-category-icon {
  width: 36px;
  height: 36px;
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 1px 10px rgba(23, 15, 73, 0.08);
  padding: 7px 9px;
}

.service-category-content {
  display: flex;
  flex-direction: column;
  justify-content: start;
  gap: 16px;
}

.service-category-title {
  font-size: 14px;
  font-weight: 800;
  line-height: 0.97;
  color: #231f20;
  font-family: "Montserrat", sans-serif;
}

.service-category-links {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.service-category-links a {
  font-size: 12px;
  font-weight: 600;
  line-height: 1.67;
  color: #231f20;
  font-family: "Montserrat", sans-serif;
  text-decoration: none;
  white-space: pre-line;
  transition: color 0.2s ease;
}

.service-category-links a:hover {
  color: #000;
}

/* MAP Expertise Dropdown */
.map-expertise-dropdown {
  width: 721px;
}

.map-expertise-dropdown-content {
  padding: 56px 60px;
  display: flex;
  align-items: center;
  gap: 69px;
}

.map-expertise-category {
  display: flex;
  gap: 18px;
}

/* Resources Dropdown */
.resources-dropdown {
  width: 570px;
  height: 353px;
}

.resources-dropdown-content {
  padding: 56px 60px;
  display: flex;
  gap: 60px;
}

.resources-list {
  width: 144px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.resource-item {
  display: flex;
  align-items: center;
  gap: 16px;
  text-decoration: none;
  color: #231f20;
  transition: color 0.2s ease;
}

.resource-item:hover {
  color: #000;
}

.resource-icon {
  width: 36px;
  height: 36px;
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 1px 10px rgba(23, 15, 73, 0.08);
}

.resource-title {
  font-size: 14px;
  font-weight: 700;
  line-height: 0.97;
  font-family: "Montserrat", sans-serif;
}

/* Featured Blog */
.featured-blog {
  width: 246px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.featured-blog-title {
  font-size: 12px;
  font-weight: 700;
  line-height: 1.13;
  color: #231f20;
  font-family: "Montserrat", sans-serif;
}

.featured-blog-card {
  height: 219px;
  background: #f8f6ee;
  border-radius: 16px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  text-decoration: none;
  overflow: hidden;
}

.featured-blog-image {
  width: 100%;
  height: 104px;
  border-radius: 16px 16px 0 0;
  overflow: hidden;
}

.featured-blog-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.featured-blog-content {
  width: 214px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: 12px;
  cursor: pointer;
}

.featured-blog-heading {
  height: 59px;
  font-size: 14px;
  font-weight: 500;
  line-height: 1.43;
  color: #231f20;
  font-family: "Montserrat", sans-serif;
}

.featured-blog-meta {
  font-size: 10px;
  font-weight: 600;
  line-height: 1.22;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: #1b1b1b;
  font-family: "Montserrat", sans-serif;
}

/* Client Work Dropdown */
.client-work-dropdown {
  width: 571px;
  height: 297px;
  right: 4rem;
  left: auto;
  transform: none;
}

.client-work-dropdown-content {
  padding: 56px 60px;
  display: flex;
  gap: 59px;
}

.client-work-list {
  width: 146px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.client-work-item {
  display: flex;
  align-items: center;
  gap: 16px;
  text-decoration: none;
  color: #231f20;
  transition: color 0.2s ease;
  width: 100%;
}

.client-work-item:hover {
  color: #000;
}

.client-work-icon {
  width: 36px;
  height: 36px;
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 1px 10px rgba(23, 15, 73, 0.08);
}

.client-work-title {
  font-size: 14px;
  font-weight: 700;
  line-height: 0.97;
  font-family: "Montserrat", sans-serif;
}

/* Featured Case Study */
.featured-case-study {
  width: 246px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.featured-case-study-title {
  font-size: 12px;
  font-weight: 800;
  line-height: 1.13;
  color: #231f20;
  font-family: "Montserrat", sans-serif;
}

.featured-case-study-card {
  height: 163px;
  background: #0964fc;
  border-radius: 16px;
  padding: 16px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  text-decoration: none;
}

.featured-case-study-content {
  width: 214px;
  display: flex;
  flex-direction: column;
  gap: 61px;
}

.featured-case-study-image {
  width: 103.38px;
  height: 28px;
}

.featured-case-study-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.featured-case-study-heading {
  height: 42px;
  font-size: 14px;
  font-weight: 500;
  line-height: 1.43;
  color: white;
  font-family: "Montserrat", sans-serif;
}

/* Contact Dropdown */
.contact-dropdown {
  width: 212px;
  height: 164px;
  right: 4rem;
  left: auto;
  transform: none;
}

.contact-dropdown-content {
  padding: 40px 39px;
}

.contact-item {
  display: flex;
  align-items: center;
  gap: 16px;
  text-decoration: none;
  color: #231f20;
  transition: color 0.2s ease;
  margin-bottom: 12px;
}

.contact-item:hover {
  color: #000;
}

.contact-icon {
  width: 36px;
  height: 36px;
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 1px 10px rgba(23, 15, 73, 0.08);
}

.contact-title {
  font-size: 14px;
  font-weight: 700;
  line-height: 0.97;
  font-family: "Montserrat", sans-serif;
}

/* Testimonial Card */
.testimonial-card {
  width: 366px;
  height: 214px;
  border-radius: 25px;
  background: #f8f6ee;
  padding: 32px 19px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.testimonial-stars {
  width: 110.67px;
  height: 16.97px;
  display: flex;
  gap: 2px;
}

.testimonial-content {
  display: flex;
  flex-direction: column;
  gap: 44px;
  position: relative;
}

.testimonial-logo {
  width: 84.5px;
  height: 24px;
  position: relative;
}

.testimonial-logo img {
  transition: opacity 0.4s ease-in-out;
}

.testimonial-text {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.testimonial-rating {
  height: 26px;
  display: flex;
  align-items: center;
  font-size: 18px;
  font-weight: 600;
  line-height: 1.51;
  color: #1b1b1b;
  font-family: "Montserrat", sans-serif;
  transition: opacity 0.4s ease-in-out;
}

.testimonial-reviews {
  height: 19px;
  font-size: 14px;
  font-weight: 400;
  line-height: 1.43;
  color: #676767;
  font-family: "Montserrat", sans-serif;
  letter-spacing: 0.0214em;
  transition: opacity 0.4s ease-in-out;
}

.testimonial-card.animating .testimonial-logo img,
.testimonial-card.animating .testimonial-rating,
.testimonial-card.animating .testimonial-reviews {
  opacity: 0;
}

/* Responsive Styles */
@media (min-width: 1280px) {
  .mobile-header {
    display: none;
  }

  .mobile-drawer {
    display: none;
  }

  .desktop-header {
    display: block;
  }
}

@media (min-width: 1536px) {
  .desktop-container {
    padding: 0 32px;
  }
}

/* Animation Classes */
.fade-in {
  animation: fadeIn 0.3s ease-in-out;
}

.fade-out {
  animation: fadeOut 0.3s ease-in-out;
}

@keyframes fadeIn {
  from {
    opacity: 0;
    transform: translateY(-10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes fadeOut {
  from {
    opacity: 1;
    transform: translateY(0);
  }
  to {
    opacity: 0;
    transform: translateY(-10px);
  }
}

/* Prevent body scroll when mobile menu is open */
body.mobile-menu-open {
  overflow: hidden;
  position: fixed;
  width: 100%;
}

/* Focus styles for accessibility */
button:focus,
a:focus {
  outline: 2px solid #ffdd2f;
  outline-offset: 2px;
}

/* High contrast mode support */
@media (prefers-contrast: high) {
  .nav-button:hover,
  .nav-link:hover {
    background-color: #ffdd2f;
    color: #000;
  }
}

/* Reduced motion support */
@media (prefers-reduced-motion: reduce) {
  * {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}
