/* Responsive CSS - Media queries and responsive behavior */

/* 
 * MOBILE FIRST APPROACH
 * Base styles in main.css and components.css are designed for mobile devices
 * Media queries below enhance the layout for larger screens
 */

/* 
 * BASE MOBILE STYLES (under 768px)
 * These styles apply to all screen sizes and are enhanced for larger screens
 */

/* Mobile-specific layout adjustments */
.header-container {
  flex-direction: column;
  gap: var(--spacing-md);
  text-align: center;
  padding: var(--spacing-sm) var(--spacing-sm);
}

/* Mobile package cards styling */
.packages-grid {
  grid-template-columns: 1fr;
  gap: var(--spacing-xl);
}

.package-card {
  padding: var(--spacing-lg) var(--spacing-md);
  max-width: 350px;
  margin: 0 auto;
}

.logo-section {
  margin-bottom: var(--spacing-xs);
}

.logo-image {
  max-height: 40px; /* Slightly smaller logo on mobile */
}

/* Mobile navigation styling */
.navigation {
  width: 100%;
}

.navigation .nav-menu {
  flex-direction: column;
  gap: var(--spacing-sm);
  width: 100%;
}

.navigation .nav-menu li {
  width: 100%;
}

.navigation .nav-menu a {
  display: block;
  text-align: center;
  padding: var(--spacing-sm);
  border-radius: var(--radius-sm);
  background-color: rgba(255, 255, 255, 0.05);
  font-size: calc(var(--font-size-nav) - 1px); /* Slightly smaller font on mobile */
  min-height: 44px; /* Ensure touch targets are at least 44px for accessibility */
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all var(--transition-normal);
}

.navigation .nav-menu a:hover,
.navigation .nav-menu a:focus {
  background-color: rgba(255, 255, 255, 0.1);
  transform: translateY(-1px);
}

.navigation .nav-menu a:hover::after {
  width: 50%;
}

/* Ensure active navigation state is visible on mobile */
.navigation .nav-menu a.current-page {
  background-color: rgba(46, 91, 186, 0.3);
  border: 1px solid rgba(46, 91, 186, 0.5);
}

/* Mobile hero section and cards */
.hero-section {
  padding: var(--spacing-lg) var(--spacing-sm);
}

.hero-grid {
  grid-template-columns: 1fr; /* Single column layout for mobile */
  gap: var(--spacing-lg);
}

.destination-card {
  max-width: 100%; /* Full width cards on mobile */
}

.card-image {
  padding-bottom: 100%; /* Consistent 1:1 square aspect ratio */
}

.card-title h2 {
  font-size: calc(var(--font-size-title) - 1px); /* Slightly smaller title on mobile */
}

.card-description {
  font-size: calc(var(--font-size-footer) - 1px);
  max-width: 100%;
}

/* Mobile footer styling */
.footer {
  padding: var(--spacing-lg) var(--spacing-sm);
}

.footer-container {
  flex-direction: column;
  gap: var(--spacing-md);
  text-align: center;
}

.footer-info {
  text-align: center;
  width: 100%;
}

.footer-logo {
  margin-bottom: var(--spacing-sm);
}

.footer-logo .logo-image {
  max-height: 35px; /* Smaller logo in footer for mobile */
}

.certifications {
  padding-top: var(--spacing-md);
  flex-wrap: wrap;
  justify-content: center;
  gap: var(--spacing-md);
}

.certification-badge {
  max-height: 35px;
}

.copyright {
  font-size: calc(var(--font-size-footer) - 1px);
  padding: 0 var(--spacing-sm);
}

/* Main content spacing for mobile */
.main-content {
  padding: var(--spacing-md) var(--spacing-sm);
}

/* Grid system adjustments for mobile */
.grid {
  grid-template-columns: 1fr;
}

/* Contact Page Mobile Styles */
.contact-section {
  padding: var(--spacing-lg) var(--spacing-sm);
}

.contact-section h1 {
  font-size: calc(var(--font-size-title) + 4px);
  margin-bottom: var(--spacing-md);
  text-align: center;
}

.intro-text {
  margin-bottom: var(--spacing-lg);
  text-align: center;
}

.intro-text p {
  font-size: var(--font-size-nav);
  line-height: var(--line-height-normal);
}

.team-grid {
  grid-template-columns: 1fr;
  gap: var(--spacing-lg);
  margin-top: var(--spacing-md);
  justify-items: center;
}

.team-member-card {
  max-width: 100%;
  width: 100%;
}

.member-photo {
  height: 250px;
}

.member-info {
  padding: var(--spacing-md);
  text-align: center;
}

.member-name {
  font-size: calc(var(--font-size-title) + 1px);
  margin-bottom: var(--spacing-xs);
}

.member-title {
  font-size: calc(var(--font-size-nav) - 1px);
  margin-bottom: var(--spacing-sm);
}

.contact-details {
  font-size: calc(var(--font-size-footer) + 1px);
}

/* 
 * SMALL MOBILE DEVICES (under 480px)
 * Further optimizations for very small screens
 */
@media (max-width: 480px) {
  :root {
    /* Slightly adjust spacing for very small screens */
    --spacing-lg: 1.75rem;
    --spacing-xl: 2.5rem;
  }
  
  .header {
    padding: var(--spacing-xs) var(--spacing-xs);
  }
  
  .logo-image {
    max-height: 35px; /* Even smaller logo on very small screens */
  }
  
  .navigation .nav-menu a {
    padding: var(--spacing-xs) var(--spacing-sm);
    font-size: calc(var(--font-size-nav) - 2px);
  }
  
  .hero-section {
    padding: var(--spacing-md) var(--spacing-xs);
  }
  
  .card-title h2 {
    font-size: calc(var(--font-size-title) - 2px);
    margin-bottom: 2px;
  }
  
  .card-description {
    font-size: calc(var(--font-size-footer) - 2px);
    display: -webkit-box;
    -webkit-line-clamp: 2;
    line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }
  
  .footer {
    padding: var(--spacing-md) var(--spacing-xs);
  }
  
  .certification-badge {
    max-height: 30px;
  }
  
  .copyright {
    font-size: calc(var(--font-size-footer) - 2px);
  }
  
  .hero-grid {
    gap: var(--spacing-md); /* Reduce gap on very small screens */
  }
  
  /* Contact page adjustments for very small screens */
  .contact-section {
    padding: var(--spacing-md) var(--spacing-xs);
  }
  
  .contact-section h1 {
    font-size: calc(var(--font-size-title) + 2px);
  }
  
  .intro-text p {
    font-size: calc(var(--font-size-nav) - 1px);
  }
  
  .team-grid {
    gap: var(--spacing-md);
  }
  
  .member-photo {
    height: 220px;
  }
  
  .member-info {
    padding: var(--spacing-sm);
  }
  
  .member-name {
    font-size: var(--font-size-title);
  }
  
  .placeholder-text {
    font-size: calc(var(--font-size-footer) - 1px);
    padding: var(--spacing-xs) var(--spacing-sm);
  }
}

/* 
 * TABLET DEVICES (768px and up)
 * Enhanced layout for tablet-sized screens
 */
@media (min-width: 768px) {
  /* Reset mobile-specific styles */
  .header-container {
    flex-direction: row;
    justify-content: space-between;
    text-align: left;
    padding: var(--spacing-sm) var(--spacing-md);
  }
  
  .logo-section {
    margin-bottom: 0;
  }
  
  .logo-image {
    max-height: 45px; /* Restore logo size */
  }
  
  /* Tablet navigation */
  .navigation {
    display: flex;
    justify-content: flex-end; /* Right-align the navigation */
  }
  
  .navigation .nav-menu {
    flex-direction: row;
    gap: var(--spacing-md);
    width: auto;
    justify-content: flex-end; /* Right-align the menu items */
  }
  
  .navigation .nav-menu li {
    width: auto;
  }
  
  .navigation .nav-menu a {
    display: inline-block;
    text-align: center;
    padding: var(--spacing-xs) var(--spacing-sm);
    background-color: transparent;
    font-size: var(--font-size-nav);
  }
  
  /* Tablet hero section and cards */
  .hero-section {
    padding: var(--spacing-xl) var(--spacing-md);
  }
  
  .hero-grid {
    grid-template-columns: 1fr 1fr; /* Two column layout for tablet and up */
    gap: var(--spacing-lg);
  }
  
  .destination-card {
    max-width: none;
  }
  
  .card-image {
    padding-bottom: 100%; /* Consistent 1:1 square aspect ratio */
  }
  
  .card-title h2 {
    font-size: var(--font-size-title);
  }
  
  .card-description {
    font-size: var(--font-size-footer);
    max-width: 95%;
  }
  
  /* Tablet footer */
  .footer {
    padding: var(--spacing-lg) var(--spacing-md);
  }
  
  .footer-container {
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
  }
  
  .footer-logo {
    margin-bottom: 0;
    flex: 1;
    text-align: left;
  }
  
  .copyright {
    flex: 2;
    text-align: center;
  }
  
  .footer-certifications {
    flex: 1;
    text-align: right;
  }
  
  .footer-logo .logo-image {
    max-height: 40px;
  }
  
  /* Main content spacing for tablet */
  .main-content {
    padding: var(--spacing-lg) var(--spacing-md);
  }
  
  /* Tablet package cards */
  .packages-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: var(--spacing-lg);
  }
  
  .package-card {
    max-width: none;
    margin: 0;
  }
  
  /* Make the third card span full width on tablet */
  .packages-grid .package-card:nth-child(3) {
    grid-column: 1 / -1;
    max-width: 350px;
    margin: 0 auto;
  }
  
  /* Contact page tablet styles */
  .contact-section {
    padding: var(--spacing-xl) var(--spacing-md);
  }
  
  .contact-section h1 {
    font-size: calc(var(--font-size-title) + 6px);
    margin-bottom: var(--spacing-lg);
    text-align: center;
  }
  
  .intro-text {
    margin-bottom: var(--spacing-xl);
    text-align: center;
    max-width: 700px;
    margin-left: auto;
    margin-right: auto;
  }
  
  .intro-text p {
    font-size: calc(var(--font-size-nav) + 1px);
    line-height: var(--line-height-normal);
  }
  
  .team-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: var(--spacing-xl);
    margin-top: var(--spacing-lg);
    justify-items: center;
  }
  
  /* Make the third card span full width on tablet */
  .team-grid .team-member-card:nth-child(3) {
    grid-column: 1 / -1;
    max-width: 400px;
    margin: 0 auto;
  }
  
  .team-member-card {
    max-width: 380px;
    width: 100%;
  }
  
  .member-photo {
    height: 280px;
  }
  
  .member-info {
    padding: var(--spacing-lg);
    text-align: center;
  }
  
  .member-name {
    font-size: calc(var(--font-size-title) + 2px);
    margin-bottom: var(--spacing-xs);
  }
  
  .member-title {
    font-size: var(--font-size-nav);
    margin-bottom: var(--spacing-sm);
  }
  
  .contact-details {
    font-size: var(--font-size-footer);
  }

/* 
 * DESKTOP DEVICES (1024px and up)
 * Enhanced layout for desktop screens
 */
@media (min-width: 1024px) {
  .header-container {
    padding: var(--spacing-sm) var(--spacing-lg);
  }
  
  .logo-image {
    max-height: 50px; /* Full size logo on desktop */
  }
  
  .navigation .nav-menu {
    gap: var(--spacing-lg);
  }
  
  .navigation .nav-menu a {
    padding: var(--spacing-xs) var(--spacing-sm);
    font-size: calc(var(--font-size-nav) + 1px); /* Slightly larger font on desktop */
  }
  
  /* Desktop hero section and cards */
  .hero-section {
    padding: var(--spacing-xxl) var(--spacing-lg);
  }
  
  .hero-grid {
    gap: var(--spacing-xl); /* Larger gap between cards on desktop */
  }
  
  .card-image {
    padding-bottom: 100%; /* Consistent 1:1 square aspect ratio */
  }
  
  .card-title h2 {
    font-size: calc(var(--font-size-title) + 2px); /* Larger title on desktop */
  }
  
  .card-description {
    font-size: calc(var(--font-size-footer) + 2px);
    max-width: 90%;
    line-height: 1.4;
  }
  
  /* Desktop footer */
  .footer {
    padding: var(--spacing-xl) var(--spacing-lg);
  }
  
  .footer-logo .logo-image {
    max-height: 45px;
  }
  
  .copyright {
    font-size: var(--font-size-footer);
  }
  
  .certification-badge {
    max-height: 45px;
  }
  
  /* Main content spacing for desktop */
  .main-content {
    padding: var(--spacing-xl) var(--spacing-lg);
  }
  
  /* Desktop package cards */
  .packages-grid {
    grid-template-columns: repeat(3, 1fr);
    gap: var(--spacing-xl);
  }
  
  /* Reset the third card span for desktop */
  .packages-grid .package-card:nth-child(3) {
    grid-column: auto;
    max-width: none;
    margin: 0;
  }
  
  .package-card {
    padding: var(--spacing-xl) var(--spacing-lg);
  }
  
  .package-icon {
    width: 90px;
    height: 90px;
  }
  
  .package-title {
    font-size: 1.7rem;
  }
  
  /* Contact page desktop styles */
  .contact-section {
    padding: var(--spacing-xxl) var(--spacing-lg);
  }
  
  .contact-section h1 {
    font-size: calc(var(--font-size-title) + 8px);
    text-align: center;
    margin-bottom: var(--spacing-xl);
  }
  
  .intro-text {
    text-align: center;
    max-width: 800px;
    margin-left: auto;
    margin-right: auto;
    margin-bottom: var(--spacing-xxl);
  }
  
  .intro-text p {
    font-size: calc(var(--font-size-nav) + 2px);
    line-height: var(--line-height-normal);
  }
  
  .team-grid {
    grid-template-columns: repeat(3, 1fr);
    gap: var(--spacing-xl);
    justify-items: center;
  }
  
  /* Reset the third card span for desktop */
  .team-grid .team-member-card:nth-child(3) {
    grid-column: auto;
    max-width: none;
    margin: 0;
  }
  
  .team-member-card {
    max-width: 350px;
    width: 100%;
  }
  
  .member-photo {
    height: 300px;
  }
  
  .member-info {
    padding: var(--spacing-lg);
    text-align: center;
  }
  
  .member-name {
    font-size: calc(var(--font-size-title) + 3px);
    margin-bottom: var(--spacing-xs);
  }
  
  .member-title {
    font-size: calc(var(--font-size-nav) + 1px);
    margin-bottom: var(--spacing-sm);
  }
  
  .contact-details {
    font-size: calc(var(--font-size-footer) + 1px);
  }

/* 
 * LARGE DESKTOP (1200px and up)
 * Final enhancements for large desktop screens
 */
@media (min-width: 1200px) {
  .header-container,
  .hero-section,
  .footer-container {
    padding-left: 0;
    padding-right: 0;
    max-width: var(--container-max-width);
    margin: 0 auto;
  }
  
  .hero-grid {
    gap: calc(var(--spacing-xl) + 1rem); /* Even larger gap on large screens */
  }
  
  .card-title h2 {
    font-size: calc(var(--font-size-title) + 4px); /* Largest title on large desktop */
  }
  
  /* Enhance hover effects on large screens */
  .destination-card:hover {
    transform: translateY(-6px);
    box-shadow: 0 12px 30px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(255, 255, 255, 0.15);
  }
  
  .navigation .nav-menu a:hover {
    transform: translateY(-3px);
  }
  
  /* Contact page large desktop styles */
  .contact-section {
    padding-left: 0;
    padding-right: 0;
    max-width: var(--container-max-width);
    margin: 0 auto;
  }
  
  .team-grid {
    gap: calc(var(--spacing-xl) + 1rem);
    justify-items: center;
  }
  
  .team-member-card {
    max-width: 380px;
    width: 100%;
  }
  
  .member-photo {
    height: 320px;
  }
  
  .member-info {
    padding: calc(var(--spacing-lg) + 0.5rem);
    text-align: center;
  }
  
  .member-name {
    font-size: calc(var(--font-size-title) + 4px);
    margin-bottom: var(--spacing-xs);
  }
  
  .member-title {
    font-size: calc(var(--font-size-nav) + 2px);
    margin-bottom: var(--spacing-sm);
  }
  
  .contact-details {
    font-size: calc(var(--font-size-footer) + 2px);
  }
  
  /* Enhanced hover effects on large screens */
  .team-member-card:hover {
    transform: translateY(-10px);
    box-shadow: 0 16px 40px rgba(0, 0, 0, 0.5), 0 6px 16px rgba(0, 0, 0, 0.3);
  }
  
  .team-member-card:hover::after {
    box-shadow: 0 0 30px 4px rgba(46, 91, 186, 0.2);
  }
}

/* 
 * EXTRA LARGE DESKTOP (1440px and up)
 * Final optimizations for very large screens
 */
@media (min-width: 1440px) {
  .hero-grid {
    gap: calc(var(--spacing-xl) + 1.5rem);
  }
  
  .contact-section {
    padding: calc(var(--spacing-xxl) + 1rem) 0;
  }
  
  .contact-section h1 {
    font-size: calc(var(--font-size-title) + 10px);
    margin-bottom: calc(var(--spacing-xl) + 0.5rem);
  }
  
  .intro-text {
    max-width: 900px;
    margin-bottom: calc(var(--spacing-xxl) + 1rem);
  }
  
  .intro-text p {
    font-size: calc(var(--font-size-nav) + 3px);
  }
  
  .team-grid {
    gap: calc(var(--spacing-xl) + 1.5rem);
    justify-items: center;
  }
  
  .team-member-card {
    max-width: 400px;
  }
  
  .member-photo {
    height: 350px;
  }
  
  .member-info {
    padding: calc(var(--spacing-lg) + 1rem);
  }
  
  .member-name {
    font-size: calc(var(--font-size-title) + 5px);
  }
  
  .member-title {
    font-size: calc(var(--font-size-nav) + 3px);
  }
  
  .contact-details {
    font-size: calc(var(--font-size-footer) + 3px);
  }
}