/* ── PropVista Custom CSS ─────────────────────────────────── */
@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,600;0,700;1,400&family=Inter:wght@300;400;500;600;700&display=swap');

:root {
  --pv-navy:  #0F2244;
  --pv-gold:  #C9962A;
  --pv-cream: #FAFAF7;
  --pv-radius: .75rem;
}

/* Base */
*, *::before, *::after { box-sizing: border-box; }
html { overflow-x: hidden; }
body { font-family: 'Inter', sans-serif; color: #2d2d2d; background: #fff; overflow-x: hidden; max-width: 100vw; }
h1,h2,h3,h4,h5,.font-display { font-family: 'Playfair Display', serif; }
img { max-width: 100%; height: auto; }

/* Brand colours */
.text-navy  { color: var(--pv-navy) !important; }
.text-gold  { color: var(--pv-gold) !important; }
.bg-navy    { background: var(--pv-navy) !important; }
.bg-gold    { background: var(--pv-gold) !important; }
.bg-cream   { background: var(--pv-cream) !important; }

/* Buttons */
.btn-navy { background: var(--pv-navy); color: #fff; border: none; }
.btn-navy:hover { background: #1a3360; color: #fff; }
.btn-gold { background: var(--pv-gold); color: #fff; border: none; }
.btn-gold:hover { background: #b8841e; color: #fff; }
.btn-outline-navy { border: 2px solid var(--pv-navy); color: var(--pv-navy); background: transparent; }
.btn-outline-navy:hover { background: var(--pv-navy); color: #fff; }
.btn-gold-bg { background: var(--pv-gold); }

/* Logo */
.logo-box    { width: 36px; height: 36px; border-radius: 8px; background: var(--pv-navy); color: var(--pv-gold); display: flex; align-items: center; justify-content: center; font-family: 'Playfair Display', serif; font-weight: 700; font-size: 1.1rem; }
.logo-box-sm { width: 28px; height: 28px; border-radius: 6px; background: var(--pv-navy); color: var(--pv-gold); display: flex; align-items: center; justify-content: center; font-family: 'Playfair Display', serif; font-weight: 700; font-size: .85rem; }
.brand-text  { font-family: 'Playfair Display', serif; font-weight: 700; font-size: 1.25rem; color: var(--pv-navy); }

/* Navbar */
#mainNav { border-bottom: 1px solid #f0f0f0; }
.nav-link { color: var(--pv-navy) !important; font-size: .9rem; padding: .5rem .75rem !important; border-radius: 6px; }
.nav-link:hover, .nav-link.active { color: var(--pv-gold) !important; background: rgba(201,150,42,.08); }

/* Hero */
.hero-section { position: relative; min-height: 90vh; display: flex; align-items: center; overflow: hidden; }
.hero-bg { position: absolute; inset: 0; background: linear-gradient(135deg, var(--pv-navy) 0%, #1a3360 50%, #0d1b35 100%); }
.hero-bg::after { content: ''; position: absolute; inset: 0; background: url('https://images.unsplash.com/photo-1560518883-ce09059eeffa?w=1600&h=900&fit=crop') center/cover; opacity: .18; }
.hero-content { position: relative; z-index: 2; }
.hero-badge { display: inline-block; background: rgba(201,150,42,.2); border: 1px solid rgba(201,150,42,.4); color: var(--pv-gold); padding: .35rem 1rem; border-radius: 50px; font-size: .8rem; font-weight: 600; letter-spacing: .05em; }
.hero-title { font-family: 'Playfair Display', serif; font-size: clamp(2rem, 5vw, 3.5rem); font-weight: 700; color: #fff; line-height: 1.2; }
.hero-subtitle { color: rgba(255,255,255,.75); font-size: 1.05rem; }

/* Search box */
.search-card { background: #fff; border-radius: 16px; padding: 1.75rem; box-shadow: 0 20px 60px rgba(0,0,0,.35); }
.search-tabs .nav-link { color: #555; padding: .5rem 1.25rem; border-radius: 8px; font-weight: 500; font-size: .9rem; }
.search-tabs .nav-link.active { background: var(--pv-navy); color: #fff !important; }

/* Stats */
.stat-item { text-align: center; }
.stat-number { font-family: 'Playfair Display', serif; font-size: 2.2rem; font-weight: 700; color: var(--pv-navy); }
.stat-label { color: #777; font-size: .875rem; }

/* Section headings */
.section-label { font-size: .75rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--pv-gold); }
.section-title { font-family: 'Playfair Display', serif; font-size: clamp(1.75rem, 3vw, 2.5rem); color: var(--pv-navy); font-weight: 700; }
.section-divider { width: 60px; height: 3px; background: var(--pv-gold); border-radius: 2px; margin: .75rem 0 1.25rem; }

/* Property Cards */
.property-card { transition: transform .25s, box-shadow .25s; border-radius: var(--pv-radius); }
.property-card:hover { transform: translateY(-6px); box-shadow: 0 16px 40px rgba(15,34,68,.15) !important; }
.property-img { transition: transform .4s; object-fit: cover; }
.property-img-wrap:hover .property-img { transform: scale(1.06); }
.btn-heart { background: rgba(255,255,255,.2); border: none; border-radius: 50%; width: 36px; height: 36px; display: flex; align-items: center; justify-content: center; backdrop-filter: blur(4px); cursor: pointer; transition: background .2s; }
.btn-heart:hover { background: rgba(255,80,80,.8); }
.btn-heart.active i { color: #ff4d4d !important; }
.two-lines { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.badge.bg-gold   { background: var(--pv-gold) !important; }
.badge.bg-purple { background: #7c3aed !important; }
.bg-navy.bg-opacity-80 { background: rgba(15,34,68,.8) !important; }
object-cover { object-fit: cover; }

/* Location Cards */
.location-card { position: relative; border-radius: 12px; overflow: hidden; cursor: pointer; }
.location-card img { width: 100%; height: 200px; object-fit: cover; transition: transform .4s; }
.location-card:hover img { transform: scale(1.08); }
.location-overlay { position: absolute; inset: 0; background: linear-gradient(to top, rgba(15,34,68,.85), transparent); display: flex; align-items: flex-end; padding: 1rem; }
.location-name { font-family: 'Playfair Display', serif; color: #fff; font-size: 1.2rem; font-weight: 700; }
.location-count { color: rgba(255,255,255,.75); font-size: .8rem; }

/* Category Cards */
.cat-card { border-radius: 12px; padding: 1.5rem; cursor: pointer; transition: all .25s; border: 2px solid transparent; background: #fff; box-shadow: 0 2px 12px rgba(0,0,0,.06); }
.cat-card:hover, .cat-card.active { border-color: var(--pv-navy); background: var(--pv-navy); color: #fff !important; }
.cat-card:hover .cat-icon, .cat-card.active .cat-icon { color: var(--pv-gold) !important; }
.cat-card:hover p, .cat-card.active p { color: rgba(255,255,255,.75) !important; }
.cat-icon { font-size: 2rem; color: var(--pv-navy); }

/* Agent Cards */
.agent-card { border-radius: 12px; overflow: hidden; background: #fff; box-shadow: 0 4px 16px rgba(0,0,0,.08); transition: transform .25s, box-shadow .25s; }
.agent-card:hover { transform: translateY(-4px); box-shadow: 0 12px 32px rgba(15,34,68,.15); }
.agent-photo { width: 80px; height: 80px; border-radius: 50%; object-fit: cover; border: 3px solid var(--pv-gold); }

/* Testimonial Cards */
.testimonial-card { background: #fff; border-radius: 12px; padding: 1.75rem; border: 1px solid #f0f0f0; box-shadow: 0 4px 16px rgba(0,0,0,.06); }
.testimonial-avatar { width: 52px; height: 52px; border-radius: 50%; object-fit: cover; }

/* Blog Cards */
.blog-card { border-radius: 12px; overflow: hidden; background: #fff; box-shadow: 0 4px 16px rgba(0,0,0,.07); transition: transform .25s; }
.blog-card:hover { transform: translateY(-4px); }
.blog-img { height: 200px; object-fit: cover; width: 100%; }
.blog-category { display: inline-block; background: rgba(201,150,42,.12); color: var(--pv-gold); padding: .2rem .75rem; border-radius: 50px; font-size: .75rem; font-weight: 600; }

/* FAQ */
.faq-item { border: 1px solid #e8e8e8; border-radius: 10px; margin-bottom: .75rem; overflow: hidden; }
.faq-btn { background: #fff; border: none; width: 100%; text-align: left; padding: 1rem 1.25rem; font-weight: 600; color: var(--pv-navy); display: flex; justify-content: space-between; align-items: center; cursor: pointer; }
.faq-btn[aria-expanded="true"] { background: var(--pv-navy); color: #fff; }
.faq-body { padding: 1rem 1.25rem; color: #555; font-size: .925rem; }

/* Footer */
.footer-bg { background: var(--pv-navy); }
.footer-heading { font-size: .75rem; letter-spacing: .1em; color: rgba(255,255,255,.5); }
.footer-link { color: rgba(255,255,255,.6); text-decoration: none; transition: color .2s; }
.footer-link:hover { color: var(--pv-gold); }
.social-icon { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; border-radius: 8px; background: rgba(255,255,255,.1); color: #fff; transition: background .2s, color .2s; text-decoration: none; font-size: 1rem; }
.social-icon:hover { background: var(--pv-gold); color: #fff; }

/* Floating WhatsApp */
.whatsapp-float { position: fixed; bottom: 90px; right: 20px; z-index: 999; background: #25d366; color: #fff; width: 56px; height: 56px; border-radius: 50%; display: flex; align-items: center; justify-content: center; box-shadow: 0 4px 16px rgba(37,211,102,.5); text-decoration: none; animation: pulse-wa 2s infinite; }
@keyframes pulse-wa { 0%,100%{box-shadow:0 4px 16px rgba(37,211,102,.5)} 50%{box-shadow:0 4px 32px rgba(37,211,102,.8)} }
@media (min-width: 576px) { .whatsapp-float { bottom: 30px; } }

/* Mobile sticky bar */
.mobile-sticky-bar { position: fixed; bottom: 0; left: 0; right: 0; z-index: 998; border-top: 1px solid #e0e0e0; background: #fff; }

/* Filter sidebar */
.filter-sidebar { background: #fff; border-radius: 12px; padding: 1.5rem; box-shadow: 0 2px 16px rgba(0,0,0,.08); position: sticky; top: 80px; }
.filter-label { font-size: .75rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: #888; margin-bottom: .5rem; display: block; }
.filter-chip { display: inline-flex; align-items: center; gap: .35rem; background: rgba(201,150,42,.1); color: var(--pv-gold); border: 1px solid rgba(201,150,42,.3); border-radius: 50px; padding: .25rem .75rem; font-size: .8rem; font-weight: 600; cursor: pointer; }
.filter-chip .btn-close { width: .6rem; height: .6rem; font-size: .6rem; opacity: .6; }

/* Property detail gallery */
.gallery-main img { border-radius: 12px; width: 100%; height: 400px; object-fit: cover; }
.gallery-thumb img { border-radius: 8px; height: 80px; object-fit: cover; cursor: pointer; border: 2px solid transparent; transition: border-color .2s; }
.gallery-thumb img.active { border-color: var(--pv-gold); }
.gallery-thumb img:hover { border-color: var(--pv-navy); }

/* Admin sidebar */
.admin-sidebar { position: fixed; top: 0; left: 0; bottom: 0; width: 260px; background: var(--pv-navy); overflow-y: auto; z-index: 100; }
.admin-sidebar::-webkit-scrollbar { width: 4px; }
.admin-sidebar::-webkit-scrollbar-thumb { background: rgba(255,255,255,.2); border-radius: 2px; }
.admin-content { margin-left: 260px; min-height: 100vh; background: #f4f6f9; }
@media (max-width: 991px) { .admin-sidebar { transform: translateX(-100%); transition: transform .3s; } .admin-sidebar.show { transform: none; } .admin-content { margin-left: 0; } }
.admin-topbar { background: #fff; border-bottom: 1px solid #e8e8e8; padding: .875rem 1.5rem; position: sticky; top: 0; z-index: 50; }
.admin-nav-link { display: flex; align-items: center; gap: .75rem; padding: .65rem 1.25rem; color: rgba(255,255,255,.7); text-decoration: none; font-size: .875rem; border-radius: 8px; margin: .15rem .75rem; transition: all .2s; }
.admin-nav-link:hover, .admin-nav-link.active { background: rgba(255,255,255,.12); color: #fff; }
.admin-nav-link i { font-size: 1rem; min-width: 20px; }
.admin-section-label { font-size: .65rem; font-weight: 700; letter-spacing: .15em; text-transform: uppercase; color: rgba(255,255,255,.35); padding: 1rem 1.25rem .25rem; margin: 0 .75rem; }
.admin-logo { padding: 1.25rem 1.5rem; border-bottom: 1px solid rgba(255,255,255,.1); display: flex; align-items: center; gap: .75rem; }
.admin-logo span { font-family: 'Playfair Display', serif; font-weight: 700; font-size: 1.1rem; color: #fff; }

/* Stat cards (admin) */
.stat-card { border-radius: 12px; padding: 1.5rem; background: #fff; border: 1px solid #eee; box-shadow: 0 2px 8px rgba(0,0,0,.04); }
.stat-card .icon-wrap { width: 50px; height: 50px; border-radius: 12px; display: flex; align-items: center; justify-content: center; font-size: 1.4rem; }

/* DataTables override */
table.dataTable { border-collapse: collapse !important; }
.dataTables_wrapper .dataTables_filter input { border-radius: 8px; border: 1px solid #ddd; padding: .375rem .75rem; }
.dataTables_wrapper .dataTables_length select { border-radius: 8px; border: 1px solid #ddd; padding: .25rem .5rem; }

/* Why Choose Us */
.why-item { display: flex; gap: 1rem; align-items: flex-start; padding: 1.5rem; background: #fff; border-radius: 12px; box-shadow: 0 2px 12px rgba(0,0,0,.06); height: 100%; }
.why-icon { font-size: 2rem; min-width: 2.5rem; }

/* CTA Section */
.cta-section { background: linear-gradient(135deg, var(--pv-navy), #1a3360); }

/* ══════════════════════════════════════════════════════
   EXTENDED SECTION STYLES
══════════════════════════════════════════════════════ */
.py-6 { padding-top: 5rem !important; padding-bottom: 5rem !important; }

/* Hero v2 */
.hero-badge { display: inline-flex; align-items: center; gap: .5rem; background: rgba(201,150,42,.15); border: 1px solid rgba(201,150,42,.35); color: var(--pv-gold); padding: .4rem 1.25rem; border-radius: 50px; font-size: .8rem; font-weight: 600; }
.pulsing-dot { width: 8px; height: 8px; border-radius: 50%; background: #22c55e; display: inline-block; animation: pulse-dot 1.8s infinite; }
@keyframes pulse-dot { 0%,100%{box-shadow:0 0 0 0 rgba(34,197,94,.5)} 50%{box-shadow:0 0 0 6px rgba(34,197,94,0)} }
.hero-search-card { background: #fff; border-radius: 20px; }
.hero-select { border: none; background: #f8f8f8; border-radius: 10px; font-size: .9rem; }
.hero-select:focus { background: #fff; box-shadow: 0 0 0 2px rgba(201,150,42,.25); }
.purpose-tab { background: transparent; border: none; color: #555; font-size: .9rem; cursor: pointer; transition: all .2s; padding: .75rem 1rem; }
.purpose-tab.active { color: var(--pv-navy); border-bottom: 3px solid var(--pv-gold); font-weight: 700; }
.purpose-tab:hover:not(.active) { color: var(--pv-navy); background: rgba(15,34,68,.04); }
.quick-tag { display: inline-block; background: rgba(15,34,68,.06); color: #555; padding: .2rem .75rem; border-radius: 50px; font-size: .75rem; text-decoration: none; transition: all .2s; }
.quick-tag:hover { background: var(--pv-navy); color: #fff; }
.hero-stat-card { background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.12); backdrop-filter: blur(6px); }
.hero-stat-num { font-family: 'Playfair Display', serif; font-weight: 700; font-size: 2rem; line-height: 1; }
.trust-badge { display: inline-flex; align-items: center; background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.12); padding: .35rem .85rem; border-radius: 50px; }
.hero-wave { position: absolute; bottom: 0; left: 0; right: 0; line-height: 0; }

/* Locations (new) */
.location-img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s; min-height: 200px; }
.location-card:hover .location-img { transform: scale(1.08); }
.location-overlay { position: absolute; inset: 0; background: linear-gradient(to top, rgba(15,34,68,.85) 0%, transparent 65%); }
.location-content { position: absolute; bottom: 0; left: 0; right: 0; padding: 1.25rem; }
.location-name { font-family: 'Playfair Display', serif; color: #fff; font-size: 1.2rem; font-weight: 700; line-height: 1.2; margin-bottom: .35rem; }

/* Categories navy */
.cat-card-navy { background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.1); text-decoration: none; transition: all .25s; }
.cat-card-navy:hover { background: rgba(201,150,42,.2); border-color: rgba(201,150,42,.4); transform: translateY(-4px); }
.cat-emoji { font-size: 2.25rem; display: block; }

/* Why Choose Us */
.why-stat-card { transition: transform .25s, box-shadow .25s; }
.why-stat-card:hover { transform: translateY(-4px); box-shadow: 0 12px 30px rgba(15,34,68,.12) !important; }

/* New Project */
.new-project-card { transition: transform .25s, box-shadow .25s; }
.new-project-card:hover { transform: translateY(-6px); box-shadow: 0 16px 40px rgba(15,34,68,.15) !important; }

/* Services */
.service-card { background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.08); transition: all .25s; }
.service-card:hover { background: rgba(201,150,42,.12); border-color: rgba(201,150,42,.3); transform: translateY(-4px); }

/* Process */
.process-line { position: absolute; top: 28px; left: 25%; right: 25%; height: 2px; background: linear-gradient(to right, var(--pv-navy), rgba(15,34,68,.2)); z-index: 0; }
.process-step { position: relative; z-index: 1; }
.process-num { width: 36px; height: 36px; border-radius: 50%; background: var(--pv-navy); color: var(--pv-gold); font-weight: 700; font-size: 1rem; display: flex; align-items: center; justify-content: center; font-family: 'Playfair Display', serif; }
.process-num-gold { background: var(--pv-gold); color: #fff; }

/* Agent V2 */
.agent-card-v2 { transition: transform .25s, box-shadow .25s; }
.agent-card-v2:hover { transform: translateY(-6px); box-shadow: 0 16px 40px rgba(15,34,68,.15) !important; }

/* GMB Reviews */
.gmb-review-card { border: 1px solid #f0f0f0; transition: transform .25s, box-shadow .25s; }
.gmb-review-card:hover { transform: translateY(-4px); box-shadow: 0 12px 30px rgba(0,0,0,.1) !important; }

/* Timeline */
.timeline { position: relative; max-width: 900px; margin: 0 auto; }
.timeline::before { content: ''; position: absolute; left: 50%; top: 0; bottom: 0; width: 2px; background: linear-gradient(to bottom, var(--pv-gold), rgba(201,150,42,.2)); transform: translateX(-50%); }
.timeline-item { width: 47%; margin-bottom: 2.5rem; position: relative; }
.timeline-left { margin-right: auto; padding-right: 2rem; }
.timeline-right { margin-left: auto; padding-left: 2rem; }
.timeline-year { font-family: 'Playfair Display', serif; font-size: 1.5rem; font-weight: 700; color: var(--pv-gold); margin-bottom: .35rem; }
.timeline-dot { position: absolute; top: 1.25rem; width: 16px; height: 16px; border-radius: 50%; background: var(--pv-gold); border: 3px solid #fff; box-shadow: 0 0 0 3px var(--pv-gold); }
.timeline-left .timeline-dot { right: -2.5rem; transform: translateX(50%); }
.timeline-right .timeline-dot { left: -2.5rem; transform: translateX(-50%); }
@media (max-width: 767px) {
  .timeline::before { left: 20px; }
  .timeline-item,.timeline-left,.timeline-right { width: 100%; padding-left: 50px; padding-right: 0; margin-left: 0; margin-right: 0; }
  .timeline-left .timeline-dot,.timeline-right .timeline-dot { left: 12px; right: auto; transform: none; }
}

/* Gallery Grid */
.gallery-grid { display: grid; grid-template-columns: repeat(4, 1fr); grid-auto-rows: 200px; gap: 12px; }
.gallery-large { grid-column: span 2; grid-row: span 2; }
.gallery-img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s; }
.gallery-item:hover .gallery-img { transform: scale(1.06); }
.gallery-overlay { inset: 0; background: linear-gradient(to top, rgba(15,34,68,.7), transparent); opacity: 0; transition: opacity .3s; }
.gallery-item:hover .gallery-overlay { opacity: 1; }
@media (max-width: 767px) { .gallery-grid { grid-template-columns: repeat(2, 1fr); } .gallery-large { grid-column: span 2; grid-row: span 1; } }

/* Awards */
.award-card-full { transition: transform .25s, box-shadow .25s; }
.award-card-full:hover { transform: translateY(-4px); box-shadow: 0 12px 30px rgba(15,34,68,.1) !important; }

/* Partner Logos */
.partner-logo-pill { border: 1px solid #e8e8e8; transition: all .2s; }
.partner-logo-pill:hover { background: var(--pv-navy) !important; color: #fff !important; }

/* Callback card */
.callback-form-card { background: #fff; box-shadow: 0 20px 60px rgba(0,0,0,.15); }

/* Contact page */
.contact-info-card { transition: transform .25s; }
.contact-info-card:hover { transform: translateY(-4px); }
.agent-contact-card { transition: transform .25s, box-shadow .25s; }
.agent-contact-card:hover { transform: translateY(-4px); box-shadow: 0 12px 30px rgba(15,34,68,.15) !important; }

/* Text utilities */
.text-white-75 { color: rgba(255,255,255,.75) !important; }
.text-white-50 { color: rgba(255,255,255,.5) !important; }
.font-display { font-family: 'Playfair Display', serif; }
.bg-success-subtle { background: rgba(25,135,84,.1) !important; }
.inset-0 { top: 0; left: 0; right: 0; bottom: 0; }
.object-cover { object-fit: cover; }

/* ── Global Responsive Overflow Fix ─────────────────────────── */
.container, .container-fluid { max-width: 100%; }
section { overflow-x: hidden; }
.row { --bs-gutter-x: 1.5rem; }
table { word-break: break-word; }

/* Hero search card responsive */
@media (max-width: 575px) {
  .search-card { padding: 1.25rem; }
  .hero-title  { font-size: 1.8rem; }
  .hero-section { min-height: 70vh; }
  .search-tabs .nav-link { padding: .4rem .75rem; font-size: .8rem; }
}

/* Gallery mobile fix */
@media (max-width: 575px) {
  .gallery-grid { grid-template-columns: repeat(2, 1fr) !important; grid-auto-rows: 140px !important; }
  .gallery-large { grid-column: span 2 !important; grid-row: span 1 !important; }
}

/* Admin content overflow fix */
.admin-content { overflow-x: hidden; }
.admin-content .p-3, .admin-content .p-4 { overflow-x: auto; }
.table-responsive { min-width: 0; }

/* Footer columns responsive */
@media (max-width: 767px) {
  .footer-col { margin-bottom: 1.5rem; }
}

/* Mobile sticky bar z-index */
.mobile-sticky-bar { z-index: 997; }

/* Prevent images from breaking layout */
.property-card img, .agent-card img, .blog-card img { max-width: 100%; }

/* Agent card v2 responsive */
@media (max-width: 576px) {
  .agent-card-v2 .d-flex.gap-4 { flex-direction: column; gap: 1rem !important; }
}

/* ═══════════════════════════════════════════════════════════
   LOCATIONS — Editorial Grid
══════════════════════════════════════════════════════════ */
.locations-section { background: #f7f8fa; }

.loc-grid {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr 1fr;
  grid-template-rows: 320px 200px;
  grid-template-areas:
    "hero hero side side"
    "c0   c1   c2   c3";
  gap: 14px;
  border-radius: 20px;
  overflow: hidden;
}

/* Hero (large left) */
.loc-hero-card {
  grid-area: hero;
  position: relative;
  border-radius: 16px;
  overflow: hidden;
  display: block;
}
.loc-hero-img {
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform .6s cubic-bezier(.4,0,.2,1);
}
.loc-hero-card:hover .loc-hero-img { transform: scale(1.06); }

/* Side stack */
.loc-side-stack {
  grid-area: side;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.loc-side-card {
  flex: 1;
  position: relative;
  border-radius: 16px;
  overflow: hidden;
  display: block;
}
.loc-side-img {
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform .5s ease;
}
.loc-side-card:hover .loc-side-img { transform: scale(1.07); }

/* Bottom row cards */
.loc-bottom-card {
  position: relative;
  border-radius: 16px;
  overflow: hidden;
  display: block;
}
.loc-bottom-card:hover .loc-side-img { transform: scale(1.08); }

/* Overlay */
.loc-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(10,20,50,.85) 0%, rgba(10,20,50,.2) 50%, transparent 100%);
}
.loc-overlay-sm {
  background: linear-gradient(to top, rgba(10,20,50,.8) 0%, transparent 70%);
}

/* Info block */
.loc-info {
  position: absolute;
  bottom: 0; left: 0; right: 0;
  padding: 1.5rem 1.75rem;
}
.loc-info-sm { padding: 1rem 1.25rem; }
.loc-tag {
  font-size: .7rem;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--pv-gold);
  margin-bottom: .35rem;
}
.loc-city-name {
  font-family: 'Playfair Display', serif;
  font-size: 1.75rem;
  font-weight: 700;
  color: #fff;
  line-height: 1.15;
  margin-bottom: .5rem;
}
.loc-stat {
  font-size: .8rem;
  font-weight: 600;
  color: rgba(255,255,255,.85);
  background: rgba(255,255,255,.15);
  backdrop-filter: blur(4px);
  padding: .25rem .75rem;
  border-radius: 50px;
}
.loc-cta {
  font-size: .82rem;
  font-weight: 700;
  color: var(--pv-gold);
  letter-spacing: .03em;
}
.loc-desc {
  font-size: .8rem;
  color: rgba(255,255,255,.7);
  margin-top: .5rem;
}
.loc-ribbon {
  position: absolute;
  top: 1rem; left: 1rem;
}

/* Pill links */
.loc-pill {
  display: inline-flex;
  align-items: center;
  padding: .35rem .85rem;
  background: #fff;
  border: 1px solid #e0e0e0;
  border-radius: 50px;
  color: var(--pv-navy);
  font-size: .8rem;
  font-weight: 500;
  transition: all .2s;
}
.loc-pill:hover {
  border-color: var(--pv-navy);
  background: var(--pv-navy);
  color: #fff;
}
.loc-pill-navy {
  background: var(--pv-navy);
  color: #fff;
  border-color: var(--pv-navy);
}
.loc-pill-navy:hover { background: #1a3360; color: #fff; }

/* Responsive */
@media (max-width: 991px) {
  .loc-grid {
    grid-template-columns: 1fr 1fr;
    grid-template-rows: 260px 180px 180px 180px;
    grid-template-areas:
      "hero hero"
      "side side"
      "c0   c1"
      "c2   c3";
  }
  .loc-side-stack { flex-direction: row; }
  .loc-city-name { font-size: 1.3rem; }
}
@media (max-width: 575px) {
  .loc-grid {
    grid-template-columns: 1fr;
    grid-template-rows: 220px 160px 160px 140px 140px 140px;
    grid-template-areas:
      "hero"
      "side"
      "c0"
      "c1"
      "c2"
      "c3";
    border-radius: 12px;
    gap: 8px;
  }
  .loc-side-stack { flex-direction: column; }
}

/* ═══════════════════════════════════════════════════════════
   REVIEW STAR PICKER
══════════════════════════════════════════════════════════ */
.review-star-picker { gap: .5rem; }
.star-btn {
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
  line-height: 1;
  transition: transform .15s;
}
.star-btn:hover { transform: scale(1.15); }
.star-btn i {
  font-size: 2rem;
  color: #ccc;
  transition: color .15s;
}
.star-btn i.bi-star-fill { color: #f59e0b; }
.star-label { font-size: .82rem; min-height: 1.2em; transition: color .2s; }
.text-gold.fw-semibold { color: var(--pv-gold) !important; }

/* Shake animation for empty star submission */
@keyframes shake {
  0%,100% { transform: translateX(0); }
  20%,60%  { transform: translateX(-6px); }
  40%,80%  { transform: translateX(6px); }
}
.shake-anim { animation: shake .45s ease; }

/* Review cards */
.review-card {
  border: 1px solid #f0f0f0;
  transition: transform .25s, box-shadow .25s;
}
.review-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 12px 32px rgba(15,34,68,.1) !important;
}

/* FAQ page */
.faq-category-block h4::after {
  content: '';
  display: block;
  width: 40px;
  height: 3px;
  background: var(--pv-gold);
  border-radius: 2px;
  margin-top: 6px;
}
