/* Maa Laxmi Travels — small layer on top of Bootstrap 5.
   Colours, buttons, forms, grid and components come from bootstrap.min.css (src/theme.scss).
   This file only adds what Bootstrap doesn't have. */

:root { --ml-orange:#EA580C; --ml-orange-dark:#C2410C; --ml-cream:#FFF7ED; --ml-cream-2:#FFEDD5; --ml-charcoal:#1C1917; }
body { -webkit-font-smoothing: antialiased; }
.section { padding: clamp(3.5rem, 7vw, 6rem) 0; }
.fw-800 { font-weight: 800; }
.ls-tight { letter-spacing: -.03em; }
.text-orange-soft { color: #FDBA74; }
.bg-cream-2 { background: var(--ml-cream-2); }
.img-fallback { background: linear-gradient(135deg, var(--ml-cream-2), #FED7AA); }
.link-arrow { font-weight: 600; text-decoration: none; border-bottom: 2px solid currentColor; padding-bottom: 2px; }

/* Header */
.topbar a { color: #fff; text-decoration: none; }
.topbar a:hover { text-decoration: underline; }
.logo-img { height: 56px; width: auto; }
@media (max-width: 575.98px) { .logo-img { height: 48px; } }
.btn-icon { width: 44px; height: 44px; padding: 0; display: inline-flex; align-items: center; justify-content: center; border-radius: 50%; }
.navbar .nav-link { white-space: nowrap; }
@media (min-width: 1200px) {
  .navbar .nav-link.active { box-shadow: inset 0 -3px 0 var(--ml-orange); }
  .dropdown-mega .dropdown-menu { min-width: 560px; padding: 1.25rem; margin-top: 0; }
  .dropdown-mega.wide .dropdown-menu { min-width: 720px; left: 50%; transform: translateX(-50%); }
  .dropdown-mega:hover > .dropdown-menu { display: block; }   /* hover on desktop, click still works */
}
.dropdown-menu .dropdown-header { padding-left: 0; font-weight: 600; }
.dropdown-menu .dropdown-item { padding-left: 0; border-radius: .375rem; }

/* Hero / sub hero */
.hero { isolation: isolate; }
.hero-bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: -2; }
.hero::before { content: ""; position: absolute; inset: 0; z-index: -1;
  background: linear-gradient(90deg, rgba(28,25,23,.92) 0%, rgba(28,25,23,.72) 50%, rgba(28,25,23,.4) 100%); }
@media (max-width: 991.98px) { .hero::before { background: linear-gradient(180deg, rgba(28,25,23,.88), rgba(28,25,23,.7)); } }
.hero-skyline { position: absolute; left: 0; right: 0; bottom: -1px; width: 100%; height: auto; color: #fff; z-index: -1; }
.hero .breadcrumb { --bs-breadcrumb-divider-color: rgba(255,255,255,.55); --bs-breadcrumb-item-active-color: #fff; font-size: .875rem; }
.hero .breadcrumb a { color: #FDBA74; text-decoration: none; }
.hero-facts b { display: block; font-size: 1.25rem; color: #fff; }

/* Booking card tabs */
.booking .nav-underline { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; }
.booking .nav-underline .nav-link { white-space: nowrap; color: #44403C; font-size: .92rem; }
.booking .nav-underline .nav-link.active { color: var(--ml-orange-dark); border-bottom-color: var(--ml-orange); }

/* Cards */
.card-hover { transition: border-color .15s, box-shadow .15s, transform .15s; }
.card-hover:hover { border-color: var(--ml-orange) !important; box-shadow: 0 .75rem 1.75rem -.75rem rgba(28,25,23,.3); }
.card-zoom img { transition: transform .4s ease; }
.card-zoom:hover img { transform: scale(1.05); }
.icon-badge { width: 3rem; height: 3rem; display: inline-flex; align-items: center; justify-content: center; border-radius: .75rem; font-size: 1.35rem; flex: none; }
.service-card .icon-badge { position: absolute; left: 1.1rem; top: -1.5rem; box-shadow: 0 6px 16px -6px rgba(194,65,12,.6); }
@media (max-width: 575.98px) { .service-card .icon-badge { position: static; width: 2.25rem; height: 2.25rem; font-size: 1rem; margin-bottom: .35rem; box-shadow: none; } }

/* Package cards (photo with overlay) */
.pkg-card { min-height: 320px; background: linear-gradient(135deg, var(--ml-orange-dark), #7C2D12); }
.pkg-card.pkg-lg { min-height: 100%; }
.pkg-card .card-img { position: absolute; inset: 0; height: 100%; object-fit: cover; }
.pkg-card .card-img-overlay { background: linear-gradient(180deg, rgba(28,25,23,0) 25%, rgba(28,25,23,.9) 100%); }

/* Milestone route cards (signature element) */
.milestones { display: flex; gap: 1.4rem; overflow-x: auto; padding: .5rem .25rem 2.2rem; scroll-snap-type: x mandatory; position: relative; z-index: 1; }
.stone { flex: 0 0 172px; scroll-snap-align: start; text-decoration: none; color: inherit; }
.stone-body { background: #fff; border: 2px solid #D6D3D1; border-radius: 86px 86px 10px 10px; overflow: hidden; text-align: center; box-shadow: 0 14px 0 -6px #D6D3D1; transition: transform .15s, border-color .15s; }
.stone:hover .stone-body { transform: translateY(-4px); border-color: var(--ml-orange); }
.stone-cap { background: var(--ml-orange); color: #fff; padding: 1.75rem .6rem .75rem; min-height: 92px; display: flex; flex-direction: column; justify-content: flex-end; }
.stone-cap strong { font-size: 1.15rem; line-height: 1.15; }
.stone-km b { display: block; font-size: 2.3rem; font-weight: 800; letter-spacing: -.04em; line-height: 1; }
.stone-fare { border-top: 1px dashed #D6D3D1; margin: .5rem .9rem 0; padding: .6rem 0 1rem; }
.road { height: 14px; background: var(--ml-charcoal); border-radius: 7px; position: relative; margin-top: -2.5rem; }
.road::after { content: ""; position: absolute; left: 12px; right: 12px; top: 6px; height: 2px; background: repeating-linear-gradient(90deg, #FDBA74 0 22px, transparent 22px 40px); }
@media (max-width: 575.98px) { .stone { flex-basis: 150px; } }

/* Reviews slider */
.slider-track { display: grid; grid-auto-flow: column; grid-auto-columns: calc((100% - 3rem) / 3); gap: 1.5rem; overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth; scrollbar-width: none; padding: .25rem; }
.slider-track::-webkit-scrollbar { display: none; }
.slider-track > * { scroll-snap-align: start; }
@media (max-width: 991.98px) { .slider-track { grid-auto-columns: calc((100% - 1.5rem) / 2); } }
@media (max-width: 575.98px) { .slider-track { grid-auto-columns: 88%; } }
.slider-dots button { width: 10px; height: 10px; border-radius: 99px; border: 0; padding: 0; background: #D6D3D1; transition: width .2s; }
.slider-dots button[aria-current="true"] { width: 28px; background: var(--ml-orange); }

/* Steps / timeline */
.step-num { width: 3rem; height: 3rem; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-weight: 700; font-size: 1.15rem; }
.timeline { list-style: none; padding: 0; margin: 0; }
.timeline > li { position: relative; padding: 0 0 1.6rem 4.5rem; }
.timeline > li::after { content: ""; position: absolute; left: 1.7rem; top: 2.2rem; bottom: .25rem; border-left: 2px solid var(--ml-cream-2); }
.timeline > li:last-child::after { display: none; }
.timeline .day { position: absolute; left: 0; top: 0; width: 3.5rem; }
.stops { list-style: none; padding: 0; margin: 0; position: relative; }
.stops::before { content: ""; position: absolute; left: 11px; top: 12px; bottom: 12px; border-left: 2px dashed #FDBA74; }
.stops li { position: relative; padding: 0 0 1.3rem 2.5rem; }
.stops li:last-child { padding-bottom: 0; }
.stops li::before { content: ""; position: absolute; left: 4px; top: 5px; width: 16px; height: 16px; border-radius: 50%; background: #fff; border: 3px solid var(--ml-orange); }
.stops li:first-child::before, .stops li:last-child::before { background: var(--ml-orange); }

/* Gallery */
.gallery-masonry { columns: 3 280px; column-gap: 1rem; }
.gallery-masonry > a { display: block; break-inside: avoid; margin-bottom: 1rem; }
.gallery-masonry img { width: 100%; height: auto; transition: transform .4s ease; }
.gallery-masonry a:hover img { transform: scale(1.04); }
.caption-gradient { background: linear-gradient(180deg, transparent, rgba(28,25,23,.8)); }

/* Footer */
.footer a { color: #D6D3D1; text-decoration: none; }
.footer a:hover { color: #FDBA74; }
.footer h3 { position: relative; padding-bottom: .6rem; }
.footer h3::after { content: ""; position: absolute; left: 0; bottom: 0; width: 28px; height: 3px; border-radius: 2px; background: var(--ml-orange); }
.footer .logo-footer { height: 88px; width: auto; }

/* Mobile sticky bar */
@media (max-width: 1199.98px) { body { padding-bottom: calc(68px + env(safe-area-inset-bottom, 0px)); } }
.mobile-bar { padding-bottom: calc(.5rem + env(safe-area-inset-bottom, 0px)) !important; box-shadow: 0 -6px 20px -10px rgba(28,25,23,.3); }

/* Sticky aside under the sticky header */
@media (min-width: 992px) { .sticky-aside { position: sticky; top: 100px; } }

/* Legal TOC */
.legal-toc { border-left: 3px solid var(--ml-cream-2); }
.prose h2 { scroll-margin-top: 100px; }
.prose li::marker { color: var(--ml-orange); }

@media (prefers-reduced-motion: reduce) { * { transition: none !important; scroll-behavior: auto !important; } }
.table-responsive { position: relative; }
.btn { white-space: nowrap; }
@media (min-width: 1200px) { .navbar-expand-xl .navbar-nav .nav-link { padding-left: .55rem; padding-right: .55rem; font-size: .93rem; } }
.booking .nav-underline { --bs-nav-underline-gap: .85rem; }
.gallery-masonry > a { min-height: 160px; }
/* The offcanvas menu lives inside the sticky header (z-index 1020), so the backdrop and
   the mobile bar must sit below the header, otherwise they cover the open menu. */
.offcanvas-backdrop { z-index: 1015; }
.mobile-bar { z-index: 1010; }
@media (max-width: 1199.98px) { .dropdown-mega .dropdown-menu { box-shadow: none !important; padding: 0 0 .5rem .75rem; } }
