/* London Airport Transfers — Plugin Styles */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

#lat-app { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; color: #111827; line-height: 1.5; }
.lat-hidden { display: none !important; }

/* ── Hero ─────────────────────────────────────────────────────── */
.lat-hero { background: linear-gradient(160deg, #eef2ff 0%, #f9fafb 100%); padding: 60px 24px 48px; text-align: center; }
.lat-hero-badge { display: inline-flex; align-items: center; gap: 6px; background: rgba(99,102,241,.12); color: #4f46e5; font-size: 13px; font-weight: 600; padding: 6px 14px; border-radius: 999px; margin-bottom: 20px; }
.lat-hero-title { font-size: clamp(2rem, 5vw, 3.5rem); font-weight: 900; letter-spacing: -.02em; line-height: 1.1; margin-bottom: 16px; }
.lat-hero-sub { font-size: 1.05rem; color: #6b7280; max-width: 600px; margin: 0 auto 32px; }
.lat-airport-pills { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; margin-top: 24px; }
.lat-pill { font-size: 12px; font-weight: 600; padding: 5px 12px; border-radius: 999px; }
.lat-pill-lhr { background: #dbeafe; color: #1d4ed8; }
.lat-pill-lgw { background: #d1fae5; color: #065f46; }
.lat-pill-stn { background: #ffedd5; color: #c2410c; }
.lat-pill-ltn { background: #ede9fe; color: #6d28d9; }
.lat-pill-lcy { background: #fce7f3; color: #9d174d; }
.lat-pill-sen { background: #ccfbf1; color: #0f766e; }

/* ── Search box ───────────────────────────────────────────────── */
.lat-search-box { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; background: #fff; border-radius: 16px; box-shadow: 0 4px 24px rgba(0,0,0,.1); padding: 12px; max-width: 860px; margin: 0 auto; }
.lat-search-compact { border-radius: 12px; padding: 8px; box-shadow: 0 2px 12px rgba(0,0,0,.08); }
.lat-field { position: relative; display: flex; align-items: center; flex: 1 1 200px; gap: 8px; background: #f3f4f6; border-radius: 10px; padding: 8px 12px; }
.lat-field input { flex: 1; border: none; background: transparent; outline: none; font-size: 15px; color: #111827; }
.lat-field input::placeholder { color: #9ca3af; }
.lat-dot  { width: 10px; height: 10px; border-radius: 50%; border: 2px solid #6366f1; flex-shrink: 0; }
.lat-pin  { font-size: 16px; flex-shrink: 0; }
.lat-swap { width: 36px; height: 36px; border-radius: 50%; border: 1px solid #e5e7eb; background: #fff; cursor: pointer; font-size: 18px; color: #6b7280; display: flex; align-items: center; justify-content: center; transition: background .15s; flex-shrink: 0; }
.lat-swap:hover { background: #f3f4f6; color: #111827; }
.lat-btn-primary { background: #4f46e5; color: #fff; border: none; border-radius: 10px; padding: 10px 28px; font-size: 15px; font-weight: 600; cursor: pointer; transition: background .15s, box-shadow .15s; white-space: nowrap; }
.lat-btn-primary:hover { background: #4338ca; box-shadow: 0 4px 12px rgba(79,70,229,.35); }
.lat-dropdown { position: absolute; top: calc(100% + 6px); left: 0; right: 0; background: #fff; border: 1px solid #e5e7eb; border-radius: 12px; box-shadow: 0 8px 24px rgba(0,0,0,.12); z-index: 9999; list-style: none; overflow: hidden; }
.lat-dropdown li button { width: 100%; text-align: left; padding: 10px 14px; border: none; background: transparent; cursor: pointer; font-size: 14px; display: flex; flex-direction: column; gap: 2px; transition: background .1s; }
.lat-dropdown li button:hover { background: #f3f4f6; }
.lat-dropdown li button .lat-dd-name { font-weight: 600; color: #111827; }
.lat-dropdown li button .lat-dd-full { font-size: 12px; color: #6b7280; }

/* ── Popular ──────────────────────────────────────────────────── */
.lat-popular { padding: 48px 24px; max-width: 1100px; margin: 0 auto; }
.lat-popular h2 { font-size: 1.75rem; font-weight: 800; margin-bottom: 4px; }
.lat-popular-sub { color: #6b7280; margin-bottom: 28px; }
.lat-popular-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 16px; }
.lat-popular-card { background: #fff; border: 1px solid #e5e7eb; border-radius: 16px; padding: 20px; cursor: pointer; transition: box-shadow .2s, border-color .2s; }
.lat-popular-card:hover { box-shadow: 0 4px 16px rgba(0,0,0,.1); border-color: #a5b4fc; }
.lat-popular-airports { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.lat-popular-code { font-size: 1.4rem; font-weight: 900; color: #111827; }
.lat-popular-arrow { color: #9ca3af; font-size: 18px; }
.lat-popular-desc { font-size: 13px; color: #6b7280; line-height: 1.4; margin-bottom: 14px; }
.lat-popular-meta { display: flex; justify-content: space-between; align-items: center; font-size: 13px; border-top: 1px solid #f3f4f6; padding-top: 12px; }
.lat-popular-mode { display: flex; align-items: center; gap: 6px; color: #6b7280; font-weight: 500; }
.lat-mode-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; }
.lat-mode-dot.bus      { background: #f97316; }
.lat-mode-dot.train    { background: #22c55e; }
.lat-mode-dot.drive    { background: #94a3b8; }
.lat-mode-dot.rideshare{ background: #a855f7; }
.lat-popular-dur { font-weight: 700; color: #111827; }
.lat-skeleton { height: 120px; border-radius: 16px; background: linear-gradient(90deg, #f3f4f6 25%, #e5e7eb 50%, #f3f4f6 75%); background-size: 200% 100%; animation: lat-shimmer 1.4s infinite; }
@keyframes lat-shimmer { 0%{background-position:200% 0} 100%{background-position:-200% 0} }

/* ── Results header ───────────────────────────────────────────── */
.lat-results-header { position: sticky; top: 0; z-index: 100; background: #fff; border-bottom: 1px solid #e5e7eb; padding: 10px 20px; display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.lat-logo { font-size: 1.1rem; font-weight: 800; color: #4f46e5; text-decoration: none; white-space: nowrap; }

/* ── Results layout ───────────────────────────────────────────── */
.lat-results-layout { display: grid; grid-template-columns: 480px 1fr; height: calc(100vh - 60px); }
@media (max-width: 900px) { .lat-results-layout { grid-template-columns: 1fr; grid-template-rows: auto 320px; height: auto; } }
.lat-panel { overflow-y: auto; border-right: 1px solid #e5e7eb; display: flex; flex-direction: column; }
.lat-map-wrap { position: relative; }
#lat-map { width: 100%; height: 100%; min-height: 320px; }

/* ── Stats bar ────────────────────────────────────────────────── */
.lat-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; background: #e5e7eb; border-bottom: 1px solid #e5e7eb; }
.lat-stat { background: #fff; padding: 16px; text-align: center; }
.lat-stat-label { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: #6b7280; margin-bottom: 4px; }
.lat-stat-value { font-size: 1.4rem; font-weight: 800; }
.lat-stat-fastest  .lat-stat-value { color: #16a34a; }
.lat-stat-cheapest .lat-stat-value { color: #2563eb; }
.lat-stat-distance .lat-stat-value { color: #d97706; }

/* ── Tabs ─────────────────────────────────────────────────────── */
.lat-tabs { display: flex; border-bottom: 1px solid #e5e7eb; padding: 0 16px; gap: 0; overflow-x: auto; }
.lat-tab { flex-shrink: 0; padding: 12px 14px; font-size: 14px; font-weight: 600; color: #6b7280; background: transparent; border: none; cursor: pointer; border-bottom: 2px solid transparent; margin-bottom: -1px; transition: color .15s, border-color .15s; display: flex; align-items: center; gap: 6px; }
.lat-tab:hover { color: #4f46e5; }
.lat-tab-active { color: #4f46e5; border-bottom-color: #4f46e5; }
.lat-badge { background: #ede9fe; color: #6d28d9; border-radius: 999px; padding: 1px 7px; font-size: 11px; font-weight: 700; }

/* ── Mode filters ─────────────────────────────────────────────── */
.lat-mode-filters { display: flex; flex-wrap: wrap; gap: 8px; padding: 12px 16px; border-bottom: 1px solid #f3f4f6; }
.lat-filter-btn { padding: 5px 12px; border-radius: 999px; border: 1px solid #e5e7eb; background: #fff; font-size: 13px; font-weight: 500; cursor: pointer; color: #374151; transition: all .15s; display: flex; align-items: center; gap: 5px; }
.lat-filter-btn:hover { border-color: #a5b4fc; color: #4f46e5; }
.lat-filter-btn.active { background: #4f46e5; color: #fff; border-color: #4f46e5; }

/* ── Route cards ──────────────────────────────────────────────── */
.lat-tab-content { flex: 1; overflow-y: auto; }
.lat-route-card { border: 1px solid #e5e7eb; border-radius: 16px; margin: 10px 12px; padding: 16px; background: #fff; transition: box-shadow .15s, border-color .15s; cursor: default; }
.lat-route-card:hover { box-shadow: 0 4px 12px rgba(0,0,0,.08); border-color: #c7d2fe; }
.lat-route-top { display: flex; align-items: flex-start; gap: 12px; margin-bottom: 10px; }
.lat-mode-icon { width: 40px; height: 40px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 18px; flex-shrink: 0; }
.lat-mode-icon.bus      { background: #fff7ed; }
.lat-mode-icon.train    { background: #f0fdf4; }
.lat-mode-icon.drive    { background: #f8fafc; }
.lat-mode-icon.rideshare{ background: #faf5ff; }
.lat-route-info { flex: 1; }
.lat-route-name { font-weight: 700; font-size: 15px; margin-bottom: 4px; }
.lat-route-meta { display: flex; gap: 12px; font-size: 13px; color: #6b7280; flex-wrap: wrap; }
.lat-route-co2 { color: #16a34a; }
.lat-route-price { font-weight: 800; font-size: 1rem; white-space: nowrap; }
.lat-route-highlights { display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0 10px; }
.lat-highlight { background: #f3f4f6; border-radius: 6px; padding: 3px 8px; font-size: 12px; color: #374151; }
.lat-route-footer { display: flex; justify-content: space-between; align-items: center; padding-top: 10px; border-top: 1px solid #f3f4f6; font-size: 13px; color: #6b7280; }
.lat-route-footer strong { color: #111827; }
.lat-book-btn { background: #4f46e5; color: #fff; border: none; border-radius: 8px; padding: 7px 18px; font-size: 13px; font-weight: 600; cursor: pointer; text-decoration: none; display: inline-block; transition: background .15s; }
.lat-book-btn:hover { background: #4338ca; }

/* ── Hotel cards ──────────────────────────────────────────────── */
.lat-hotel-card { border: 1px solid #e5e7eb; border-radius: 16px; margin: 10px 12px; padding: 16px; background: #fff; transition: box-shadow .15s, border-color .15s; }
.lat-hotel-card:hover { box-shadow: 0 4px 12px rgba(0,0,0,.08); border-color: #c7d2fe; }
.lat-hotel-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 8px; margin-bottom: 8px; }
.lat-hotel-name { font-weight: 700; font-size: 15px; }
.lat-hotel-price { font-weight: 800; font-size: 1rem; white-space: nowrap; }
.lat-hotel-price span { font-size: 12px; font-weight: 500; color: #6b7280; }
.lat-stars { color: #f59e0b; font-size: 14px; margin-bottom: 6px; }
.lat-hotel-context-badge { display: inline-flex; align-items: center; gap: 6px; margin-bottom: 6px; background: #eef2ff; color: #4338ca; border-radius: 999px; padding: 4px 10px; font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: .04em; }
.lat-hotel-context-badge.from { background: #eff6ff; color: #1d4ed8; }
.lat-hotel-context-badge.to { background: #ecfdf5; color: #047857; }
.lat-hotel-review { font-size: 13px; color: #6b7280; margin-bottom: 8px; }
.lat-hotel-review strong { color: #111827; }
.lat-hotel-amenities { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 10px; }
.lat-amenity { background: #f3f4f6; border-radius: 6px; padding: 3px 8px; font-size: 12px; color: #374151; }
.lat-hotel-footer { display: flex; justify-content: space-between; align-items: center; padding-top: 10px; border-top: 1px solid #f3f4f6; font-size: 12px; color: #6b7280; }

/* ── Tour cards ───────────────────────────────────────────────── */
.lat-tour-card { border: 1px solid #e5e7eb; border-radius: 16px; margin: 10px 12px; padding: 16px; background: #fff; transition: box-shadow .15s, border-color .15s; }
.lat-tour-card:hover { box-shadow: 0 4px 12px rgba(0,0,0,.08); border-color: #c7d2fe; }
.lat-tour-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 8px; margin-bottom: 8px; }
.lat-tour-title { font-weight: 700; font-size: 15px; flex: 1; }
.lat-tour-price { font-weight: 800; font-size: 1rem; white-space: nowrap; }
.lat-category-badge { display: inline-block; background: #ede9fe; color: #6d28d9; border-radius: 6px; padding: 2px 8px; font-size: 11px; font-weight: 700; text-transform: capitalize; margin-bottom: 6px; }
.lat-tour-desc { font-size: 13px; color: #374151; line-height: 1.5; margin-bottom: 8px; }
.lat-tour-footer { display: flex; justify-content: space-between; align-items: center; padding-top: 10px; border-top: 1px solid #f3f4f6; font-size: 12px; color: #6b7280; }
.lat-tour-footer strong { color: #111827; }

/* ── Empty / loading states ───────────────────────────────────── */
.lat-loading, .lat-empty { padding: 40px 24px; text-align: center; color: #6b7280; }
.lat-loading-dots { display: inline-flex; gap: 5px; }
.lat-loading-dots span { width: 8px; height: 8px; border-radius: 50%; background: #4f46e5; animation: lat-bounce .8s infinite alternate; }
.lat-loading-dots span:nth-child(2) { animation-delay: .2s; }
.lat-loading-dots span:nth-child(3) { animation-delay: .4s; }
@keyframes lat-bounce { to { transform: translateY(-8px); opacity: .4; } }


/* ── Homepage hotel cards ────────────────────────────────────── */
.lat-popular-hotels { padding-top: 8px; }
.lat-skeleton-hotel { height: 270px; }
.lat-popular-hotel-card { padding: 0; overflow: hidden; }
.lat-popular-hotel-image-wrap { position: relative; height: 170px; overflow: hidden; background: #e5e7eb; }
.lat-popular-hotel-image { width: 100%; height: 100%; object-fit: cover; display: block; }
.lat-popular-hotel-badge { position: absolute; top: 12px; left: 12px; background: rgba(17,24,39,.82); color: #fff; border-radius: 999px; padding: 6px 10px; font-size: 12px; font-weight: 700; }
.lat-popular-hotel-body { padding: 16px; }
.lat-popular-hotel-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; margin-bottom: 10px; }
.lat-popular-hotel-name { font-size: 1rem; font-weight: 800; color: #111827; line-height: 1.25; margin-bottom: 4px; }
.lat-popular-hotel-stars { color: #f59e0b; font-size: 13px; }
.lat-popular-hotel-price { font-size: 1rem; font-weight: 800; color: #111827; white-space: nowrap; }
.lat-popular-hotel-price span { font-size: 12px; font-weight: 600; color: #6b7280; }
.lat-hotel-home-cta { padding: 7px 14px; }

/* ── Results hotel images ────────────────────────────────────── */
.lat-hotel-card { overflow: hidden; padding: 0; }
.lat-hotel-image-wrap { height: 185px; background: #e5e7eb; }
.lat-hotel-image { width: 100%; height: 100%; object-fit: cover; display: block; }
.lat-hotel-content { padding: 16px; }
@media (max-width: 640px) {
  .lat-popular-hotel-image-wrap,
  .lat-hotel-image-wrap { height: 160px; }
}


/* ── Map airports and route state ───────────────────────────── */
.lat-airport-map-icon { background: transparent; border: 0; }
.lat-airport-map-icon span { display:flex; align-items:center; justify-content:center; width:42px; height:42px; border-radius:999px; background:#ffffff; color:#111827; border:2px solid #cbd5e1; box-shadow:0 10px 25px rgba(15,23,42,.14); font-size:12px; font-weight:800; letter-spacing:.04em; }
.lat-airport-map-icon.is-primary span { width:52px; height:52px; background:#4f46e5; color:#fff; border-color:#312e81; }
.lat-map-info { background:rgba(255,255,255,.96); color:#111827; border:1px solid #e5e7eb; border-radius:14px; box-shadow:0 18px 34px rgba(15,23,42,.14); padding:12px 14px; max-width:260px; }
.lat-map-info strong { display:block; font-size:13px; font-weight:800; margin-bottom:4px; }
.lat-map-info span { display:block; font-size:12px; line-height:1.45; color:#475569; }
.lat-route-card-active { border-color:#818cf8; box-shadow:0 10px 24px rgba(79,70,229,.14); }


/* ── Richer map markers ─────────────────────────────────────── */
.lat-airport-map-icon span { width:62px; height:62px; flex-direction:column; gap:1px; padding:8px 6px; }
.lat-airport-map-icon span strong { font-size:12px; line-height:1; }
.lat-airport-map-icon span small { font-size:9px; line-height:1.1; font-weight:700; color:#475569; text-align:center; }
.lat-airport-map-icon.is-primary span { width:78px; height:78px; }
.lat-airport-map-icon.is-primary span small { color:rgba(255,255,255,.88); }
.lat-point-map-icon { background:transparent; border:0; }
.lat-point-map-icon span { display:inline-flex; align-items:center; justify-content:center; width:34px; height:34px; border-radius:999px; font-size:16px; box-shadow:0 10px 20px rgba(15,23,42,.16); }
.lat-point-map-icon small { display:none; }
.lat-point-hotel span { background:#0f766e; }
.lat-point-attraction span { background:#b45309; }
.lat-point-map-icon span { color:#fff; border:2px solid rgba(255,255,255,.9); }


.lat-section-head { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; margin-bottom: 24px; }
.lat-text-link { border:none; background:transparent; color:#4f46e5; font-weight:700; cursor:pointer; padding:4px 0; white-space:nowrap; }
.lat-text-link:hover { color:#4338ca; text-decoration:underline; }
.lat-popular-grid-three { grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); }
.lat-popular-tour-card .lat-category-badge { display:inline-flex; margin-top:8px; }
@media (max-width: 720px) {
  .lat-section-head { flex-direction:column; align-items:flex-start; }
}

.lat-popular-guide-card .lat-popular-desc{min-height:54px;}
