@import url('https://fonts.googleapis.com/css2?family=Baloo+2:wght@400;500;600;700&family=Montserrat:wght@300;400;500;600;700&display=swap');

:root {
  --color-primary: #0EA5E9;
  --color-secondary: #38BDF8;
  --color-cta: #F97316;
  --color-background: #F0F9FF;
  --color-text: #0C4A6E;
  --font-heading: 'Baloo 2', sans-serif;
  --font-body: 'Montserrat', sans-serif;
}

.dark {
  --color-background: #020617;
  --color-text: #F0F9FF;
  --color-primary: #38BDF8;
}

html {
  overflow-x: hidden;
}

body {
  font-family: var(--font-body);
  background-color: var(--color-background);
  color: var(--color-text);
  transition: background-color 300ms ease, color 300ms ease;
  overflow-x: hidden;
}

h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-heading);
}

/* Custom Scrollbar */
::-webkit-scrollbar {
  width: 10px;
}
::-webkit-scrollbar-track {
  background: rgba(14, 165, 233, 0.1);
}
::-webkit-scrollbar-thumb {
  background: var(--color-primary);
  border-radius: 5px;
}
::-webkit-scrollbar-thumb:hover {
  background: var(--color-cta);
}

/* Scroll Animation Classes */
.reveal-on-scroll {
  opacity: 0;
  transform: translateY(40px) scale(0.98);
  transition: opacity 800ms cubic-bezier(0.215, 0.61, 0.355, 1), 
              transform 800ms cubic-bezier(0.215, 0.61, 0.355, 1);
  will-change: transform, opacity;
}

.reveal-on-scroll.revealed {
  opacity: 1;
  transform: translateY(0) scale(1);
}

/* Specific Animation Variations */
.reveal-slide-left {
  opacity: 0;
  transform: translateX(-50px);
  transition: opacity 850ms cubic-bezier(0.215, 0.61, 0.355, 1), 
              transform 850ms cubic-bezier(0.215, 0.61, 0.355, 1);
}
.reveal-slide-left.revealed {
  opacity: 1;
  transform: translateX(0);
}

.reveal-slide-right {
  opacity: 0;
  transform: translateX(50px);
  transition: opacity 850ms cubic-bezier(0.215, 0.61, 0.355, 1), 
              transform 850ms cubic-bezier(0.215, 0.61, 0.355, 1);
}
.reveal-slide-right.revealed {
  opacity: 1;
  transform: translateX(0);
}

.reveal-zoom {
  opacity: 0;
  transform: scale(0.9);
  transition: opacity 800ms cubic-bezier(0.215, 0.61, 0.355, 1), 
              transform 800ms cubic-bezier(0.215, 0.61, 0.355, 1);
}
.reveal-zoom.revealed {
  opacity: 1;
  transform: scale(1);
}

/* Hover and Focus States */
.hover-lift {
  transition: transform 250ms cubic-bezier(0.16, 1, 0.3, 1), 
              box-shadow 250ms cubic-bezier(0.16, 1, 0.3, 1);
}
.hover-lift:hover {
  transform: translateY(-5px);
  box-shadow: 0 12px 24px -10px rgba(12, 74, 110, 0.15);
}

.dark .hover-lift:hover {
  box-shadow: 0 12px 24px -10px rgba(56, 189, 248, 0.15);
}

/* Custom Glassmorphism Card */
.glass-card {
  background: rgba(255, 255, 255, 0.7);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid rgba(255, 255, 255, 0.4);
}

.dark .glass-card {
  background: rgba(15, 23, 42, 0.6);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid rgba(255, 255, 255, 0.05);
}

/* Pulsing Online Indicator */
.pulse-green {
  box-shadow: 0 0 0 0 rgba(34, 197, 94, 0.7);
  animation: pulse-green 2s infinite;
}

@keyframes pulse-green {
  0% {
    transform: scale(0.95);
    box-shadow: 0 0 0 0 rgba(34, 197, 94, 0.7);
  }
  70% {
    transform: scale(1);
    box-shadow: 0 0 0 8px rgba(34, 197, 94, 0);
  }
  100% {
    transform: scale(0.95);
    box-shadow: 0 0 0 0 rgba(34, 197, 94, 0);
  }
}

/* Leaflet Map Height Adjustments */
#map {
  z-index: 10;
}

/* Image zoom on hover */
.img-zoom-container {
  overflow: hidden;
}
.img-zoom-container img {
  transition: transform 0.5s ease;
}
.img-zoom-container:hover img {
  transform: scale(1.05);
}

/* Wave separators */
.wave-divider {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  overflow: hidden;
  line-height: 0;
}

.wave-track {
  display: flex;
  width: 200%;
  animation: wave-scroll 24s linear infinite;
}

.wave-divider svg {
  position: relative;
  display: block;
  flex-shrink: 0;
  width: 50%;
  height: 60px;
}

@keyframes wave-scroll {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}

@media (prefers-reduced-motion: reduce) {
  .wave-track {
    animation: none;
  }
}
