.vp{padding:var(--s-8) var(--s-6);display:flex;flex-direction:column;gap:var(--s-5);max-width:960px}
.vp-preview-banner{display:flex;align-items:center;gap:.6rem;padding:.85rem 1.1rem;border-radius:var(--r-lg);
  background:color-mix(in srgb, var(--warning, #e0a30a) 12%, transparent);
  border:1px solid color-mix(in srgb, var(--warning, #e0a30a) 35%, transparent);
  color:var(--ink);font-size:.85rem;line-height:1.6}
.vp-preview-banner i{flex:none;color:var(--warning, #e0a30a)}
.vp-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--s-8);box-shadow:var(--shadow-sm)}
.vp-card h2{font-size:1.15rem;margin-bottom:1rem;letter-spacing:-.02em}

/* header */
.vp-head{display:flex;justify-content:space-between;align-items:center;gap:1.5rem;flex-wrap:wrap}
.vp-head__main{display:flex;align-items:center;gap:1.1rem}
.vp-avatar{width:76px;height:76px;flex:none;display:grid;place-items:center;font-size:1.7rem;font-weight:700;
  overflow:hidden;color:var(--brand-ink);background:var(--grad);border-radius:50% 50% 50% 10px;box-shadow:var(--shadow)}
.vp-avatar img{width:100%;height:100%;object-fit:cover}
.vp-caps{display:flex;flex-wrap:wrap;gap:.4rem;margin:1rem 0 .25rem}
.vp-capbadge{font-size:.78rem;padding:.25rem .7rem;border-radius:999px;color:var(--brand-2);
  background:rgba(37,99,235,.1);border:1px solid rgba(37,99,235,.3)}
.vp-head h1{font-size:1.7rem;letter-spacing:-.03em}
.vp-tags{display:flex;gap:.5rem;flex-wrap:wrap;margin:.5rem 0}
.vp-badge{font-size:.75rem;padding:.22rem .7rem;border-radius:999px;
  color:var(--brand);background:rgba(12,166,120,.1);border:1px solid rgba(12,166,120,.35)}
.vp-spec{font-size:.85rem;color:var(--muted)}
.vp-verified{display:inline-flex;align-items:center;gap:.25rem;font-size:.75rem;padding:.22rem .7rem;border-radius:999px;
  color:var(--brand-2);background:rgba(37,99,235,.1);border:1px solid rgba(37,99,235,.35)}
.vp-verified .ic{width:13px;height:13px}
.vp-rating{display:flex;align-items:center;gap:.3rem;color:var(--warn);font-weight:600;font-size:.95rem}
.vp-rating .ic{width:16px;height:16px}
.vp-rating span{color:var(--muted);font-weight:400;font-size:.82rem}
.vp-rating--empty{color:var(--muted);font-size:.82rem;font-weight:500}
.vp-head__side{display:flex;flex-direction:column;align-items:flex-end;gap:.8rem}

/* pill (shared look with panel) */
.pill{font-size:.8rem;font-weight:600;padding:.35rem .85rem;border-radius:999px;
  border:1px solid var(--line);white-space:nowrap}
.pill--on{color:var(--brand);background:rgba(12,166,120,.12);border-color:rgba(12,166,120,.45)}
.pill--off{color:var(--muted);background:var(--card)}

/* about + location grid */
.vp-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.vp-bio{color:var(--ink);line-height:1.9;font-size:.95rem}
.vp-facts{display:flex;flex-direction:column;gap:.6rem;margin-top:1.1rem}
.vp-fact{display:flex;justify-content:space-between;font-size:.88rem;
  padding:.5rem .1rem;border-top:1px solid var(--line)}
.vp-fact__k{color:var(--muted)}
.vp-fact__v{font-weight:600}
.vp-fact--highlight .vp-fact__v{color:var(--brand);font-weight:750}
.vp-map{height:220px;border-radius:14px;overflow:hidden;border:1px solid var(--line)}
.vp-map-caption{color:var(--muted);font-size:.78rem;line-height:1.7;margin:-.45rem 0 .7rem}

/* reviews */
.vp-reviews{display:flex;flex-direction:column;gap:.7rem}
.vp-review{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px;box-shadow:var(--shadow-sm)}
.vp-review__top{display:flex;justify-content:space-between;align-items:center}
.vp-review__stars{display:inline-flex;align-items:center;gap:.25rem;color:var(--warn);font-size:.85rem;font-weight:600}
.vp-review__stars .ic{width:14px;height:14px}
.vp-review__body{color:var(--muted);font-size:.9rem;margin-top:.4rem}
.vp-empty{text-align:center;color:var(--muted);padding:1.8rem 1rem;font-size:.9rem}
.muted{color:var(--muted)}
.leaflet-popup-content{font-family:Vazirmatn,sans-serif;direction:rtl}

/* booking modal */
.modal{position:fixed;inset:0;background:var(--overlay);backdrop-filter:blur(4px);display:none;place-items:center;z-index:2000;padding:20px}
.modal--on{display:grid}
.modal__box{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);
  padding:28px;width:100%;max-width:440px;position:relative;box-shadow:var(--shadow);max-height:90vh;overflow-y:auto}
.modal__x{position:absolute;top:16px;inset-inline-start:16px;background:0;border:0;color:var(--muted);font-size:1.1rem;cursor:pointer}
.modal__box h3{margin-bottom:1.25rem}
.vp-field{display:block;margin-bottom:.75rem;font-size:.88rem;color:var(--muted)}
.vp-field input,.vp-field textarea{width:100%;margin-top:.35rem;padding:.6rem .8rem;background:var(--card);
  border:1px solid var(--line);border-radius:12px;color:var(--ink);font-family:inherit;font-size:.95rem;resize:none}
.vp-field input:focus,.vp-field textarea:focus{outline:none;border-color:var(--brand)}
.vp-field-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:.6rem}
.err{color:#f87171;font-size:.85rem;text-align:center;margin-top:.6rem;min-height:1rem}
.hint{color:var(--brand);font-size:.85rem;text-align:center;margin-top:.5rem;min-height:1rem}

/* Keep the primary home-visit action reachable while the profile is scrolled on
   small screens. The desktop header action remains the source button for JS. */
.vp-mobile-cta{display:none}

@media(max-width:760px){
  .vp-grid{grid-template-columns:1fr}
  .vp-head{flex-direction:column;align-items:flex-start}
  .vp-head__side{align-items:flex-start;flex-direction:row}
  .has-vp-cta .vp{padding-bottom:calc(92px + env(safe-area-inset-bottom))}
  .has-vp-cta .vp-head__side #bookBtn{display:none}
  .vp-mobile-cta{position:fixed;right:0;bottom:0;left:0;z-index:80;display:block;padding:10px 14px calc(10px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:color-mix(in srgb,var(--surface) 92%,transparent);box-shadow:0 -14px 32px -24px rgba(16,42,53,.5);backdrop-filter:blur(14px)}
  .vp-mobile-cta__btn{width:100%;min-height:50px}
}
