/* =========================================
   City Bike — Custom Styles
   Tailwind handles utilities; this file covers
   animations, the route-line signature motif,
   and components Tailwind can't express alone.
========================================= */

html {
  scroll-behavior: smooth;
}

/* ===== STICKY HEADER STATE ===== */
#site-header.scrolled {
  background-color: #ffffff;
  box-shadow: 0 2px 20px rgba(0, 0, 0, 0.08);
}
#site-header.scrolled #logo-text,
#site-header.scrolled .nav-link {
  color: #111111;
}
#site-header.scrolled .nav-link.text-gold {
  color: #FFC107;
}
#site-header.scrolled #phone-btn {
  color: #111111;
  border-color: rgba(17, 17, 17, 0.25);
}
#site-header.scrolled #mobile-toggle {
  color: #111111;
}

/* ===== ROUTE-LINE SIGNATURE MOTIF ===== */
/* A dashed road-marking line that threads through key sections,
   nodding to the "ride" theme without becoming decoration overload. */
.route-line {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 1;
  opacity: 0.55;
  pointer-events: none;
}

/* ===== BOOKING FORM CARD (glassmorphism) ===== */
.booking-card {
  background: rgba(255, 255, 255, 0.08);
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
  border: 1px solid rgba(255, 255, 255, 0.18);
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.35);
}
.booking-input {
  width: 100%;
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.25);
  color: #ffffff;
  border-radius: 10px;
  padding: 0.65rem 0.85rem;
  font-size: 0.875rem;
  outline: none;
  transition: border-color 0.3s ease, background 0.3s ease;
  color-scheme: dark;
  -webkit-appearance: none;
  appearance: none;
  -webkit-text-fill-color: #ffffff;
}
.booking-input::placeholder {
  color: rgba(255, 255, 255, 0.75);
}
.booking-input:focus {
  border-color: #FFC107;
  background: rgba(255, 255, 255, 0.14);
}
.booking-input::-webkit-datetime-edit,
.booking-input::-webkit-datetime-edit-fields-wrapper,
.booking-input::-webkit-datetime-edit-text,
.booking-input::-webkit-datetime-edit-year-field,
.booking-input::-webkit-datetime-edit-month-field,
.booking-input::-webkit-datetime-edit-day-field,
.booking-input::-webkit-datetime-edit-hour-field,
.booking-input::-webkit-datetime-edit-minute-field {
  color: #ffffff;
}
.booking-input::-webkit-calendar-picker-indicator {
  filter: invert(1) opacity(0.85);
}
.booking-input option {
  color: #111111;
}

/* ===== CONTACT FORM INPUTS ===== */
.contact-input {
  width: 100%;
  background: #ffffff;
  border: 1.5px solid #EAEAEA;
  color: #222222;
  border-radius: 12px;
  padding: 0.75rem 1rem;
  font-size: 0.9rem;
  outline: none;
  transition: border-color 0.3s ease, box-shadow 0.3s ease;
}
.contact-input:focus {
  border-color: #FFC107;
  box-shadow: 0 0 0 3px rgba(255, 193, 7, 0.15);
}

/* ===== FLEET CARDS ===== */
.fleet-card {
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.06);
  transition: transform 0.35s ease, box-shadow 0.35s ease;
}
.fleet-card:hover {
  transform: translateY(-6px);
  box-shadow: 0 18px 40px rgba(0, 0, 0, 0.12);
}
.fleet-img {
  transition: transform 0.5s ease;
}
.fleet-card:hover .fleet-img {
  transform: scale(1.06);
}

/* ===== STEP CARDS (How It Works) ===== */
.step-card {
  transition: transform 0.3s ease;
}
.step-card:hover {
  transform: translateY(-4px);
}

/* ===== FEATURE / BRANCH CARDS ===== */
.feature-card,
.branch-card {
  transition: transform 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease;
}
.feature-card:hover,
.branch-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 14px 30px rgba(0, 0, 0, 0.08);
  border-color: #FFC107;
}

/* ===== PROMO CIRCLE ===== */
.promo-circle {
  position: absolute;
  width: 320px;
  height: 320px;
  border-radius: 50%;
  background: radial-gradient(circle at 35% 30%, #ffe27a, #FFC107 70%);
  z-index: 0;
}
.img-zoom {
  transition: transform 0.5s ease;
}
.img-zoom:hover {
  transform: scale(1.04) rotate(-1deg);
}
.img-zoom-wrap {
  transition: transform 0.5s ease;
}
.img-zoom-wrap:hover {
  transform: scale(1.02);
}

/* ===== REVIEW CARDS ===== */
.review-card {
  transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.review-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 14px 30px rgba(0, 0, 0, 0.08);
}
#review-dots button {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #EAEAEA;
  transition: background 0.3s ease, width 0.3s ease;
}
#review-dots button.active {
  background: #FFC107;
  width: 22px;
  border-radius: 999px;
}

/* ===== FAQ ACCORDION ===== */
.faq-item {
  transition: border-color 0.3s ease;
}
.faq-item.active {
  border-color: #FFC107;
}
.faq-panel {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.35s ease;
}
.faq-item.active .faq-panel {
  max-height: 300px;
}
.faq-item.active .faq-chevron {
  transform: rotate(180deg);
}

/* ===== BUTTON RIPPLE ===== */
.btn-ripple {
  position: relative;
  overflow: hidden;
}
.btn-ripple .ripple {
  position: absolute;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.5);
  transform: scale(0);
  animation: ripple-anim 0.6s ease-out;
  pointer-events: none;
}
@keyframes ripple-anim {
  to {
    transform: scale(3);
    opacity: 0;
  }
}

/* ===== SCROLL REVEAL ANIMATIONS ===== */
.fade-up {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.7s ease, transform 0.7s ease;
}
.fade-up.in-view {
  opacity: 1;
  transform: translateY(0);
}

.slide-left {
  opacity: 0;
  transform: translateX(-40px);
  transition: opacity 0.7s ease, transform 0.7s ease;
}
.slide-left.in-view {
  opacity: 1;
  transform: translateX(0);
}

.slide-right {
  opacity: 0;
  transform: translateX(40px);
  transition: opacity 0.7s ease, transform 0.7s ease;
}
.slide-right.in-view {
  opacity: 1;
  transform: translateX(0);
}

/* Respect reduced motion preference */
@media (prefers-reduced-motion: reduce) {
  .fade-up, .slide-left, .slide-right {
    opacity: 1;
    transform: none;
    transition: none;
  }
  html {
    scroll-behavior: auto;
  }
}

/* Utility used by fleet wishlist icon (Tailwind doesn't ship w-4.5) */
.w-4\.5 { width: 1.125rem; }
.h-4\.5 { height: 1.125rem; }

/* ===== MOBILE STICKY BOTTOM BAR CLEARANCE ===== */
@media (max-width: 1023px) {
  body {
    padding-bottom: 4.5rem;
  }
}

/* ===== BOOKING POPUP MODAL ===== */
#booking-modal-overlay {
  animation: modal-fade-in 0.25s ease;
}
#booking-modal-overlay.flex {
  display: flex;
}
@keyframes modal-fade-in {
  from { opacity: 0; }
  to { opacity: 1; }
}
#booking-modal-card {
  animation: modal-pop-in 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
}
@keyframes modal-pop-in {
  from { opacity: 0; transform: translateY(20px) scale(0.96); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

.modal-input {
  width: 100%;
  background: #ffffff;
  border: 1.5px solid transparent;
  color: #111111;
  border-radius: 12px;
  padding: 0.8rem 1rem 0.8rem 2.75rem;
  font-size: 0.875rem;
  outline: none;
  transition: box-shadow 0.3s ease, border-color 0.3s ease;
  color-scheme: light;
}
.modal-input::placeholder {
  color: #8a8a8a;
}
.modal-input:focus {
  border-color: #FFC107;
  box-shadow: 0 0 0 3px rgba(255, 193, 7, 0.25);
}

/* ===== SIMPLE HERO SLIDER ===== */
.slider-wrap { background: #0b0b0b; }
.slider-wrap .slides { will-change: transform; }
.slider-wrap .slide img { display: block; }
.slider-prev, .slider-next { border: none; cursor: pointer; }
.slider-dots button { width: 9px; height: 9px; border-radius: 50%; background: rgba(255,255,255,0.6); border: none; transition: transform 0.2s ease, background 0.2s ease; }
.slider-dots button.active { background: #FFC107; transform: scale(1.2); }

@media (min-width: 768px) {
  .slider-wrap .slide img { height: 380px; }
}

@media (max-width: 767px) {
  .slider-wrap .slide img { height: 220px; }
}
.modal-input-icon {
  position: absolute;
  left: 0.9rem;
  top: 50%;
  transform: translateY(-50%);
  width: 1.05rem;
  height: 1.05rem;
  color: #b8860b;
  pointer-events: none;
}
.modal-select-chevron {
  position: absolute;
  right: 0.9rem;
  top: 50%;
  transform: translateY(-50%);
  width: 1rem;
  height: 1rem;
  color: #8a8a8a;
  pointer-events: none;
}
