/* Ventures map (docs/venture-map-brief.md). Plain CSS, not Tailwind utilities: the panel's
   open/closed transform and the pin colours are JS-toggled, and a purged or reordered utility
   class must not decide them (CLAUDE.md, Tailwind gotchas). Everything is namespaced vm-. */
.vm { position: relative; isolation: isolate; height: calc(100vh - 68px); height: calc(100dvh - 68px); min-height: 520px; background: #e5e7eb; overflow: hidden; }
.vm__map { position: absolute; inset: 0; }

/* Search + filters */
.vm__bar { position: absolute; z-index: 1100; top: 12px; left: 12px; right: 12px; display: flex; flex-wrap: wrap; gap: 8px; align-items: flex-start; pointer-events: none; max-width: 760px; }
.vm__bar > * { pointer-events: auto; }
.vm__search { position: relative; flex: 1 1 260px; min-width: 200px; }
.vm__input { width: 100%; height: 44px; border: 1px solid #d1d5db; border-radius: 10px; padding: 0 14px; font-size: 16px; background: #fff; box-shadow: 0 2px 8px rgba(15,23,42,.18); }
.vm__input:focus { outline: 2px solid #0b5d3b; outline-offset: 1px; }
.vm__results { position: absolute; top: 48px; left: 0; right: 0; margin: 0; padding: 4px; list-style: none; background: #fff; border-radius: 10px; box-shadow: 0 8px 24px rgba(15,23,42,.25); max-height: 50vh; overflow: auto; }
.vm__results li { display: flex; flex-direction: column; padding: 8px 10px; border-radius: 8px; cursor: pointer; font-size: 14px; }
.vm__results li[role=option]:hover, .vm__results li[role=option]:focus { background: #ecfdf5; outline: none; }
.vm__results li span { color: #6b7280; font-size: 12px; }
.vm__none { color: #6b7280; cursor: default !important; }
.vm__filters { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; background: rgba(255,255,255,.94); border-radius: 10px; padding: 6px 8px; box-shadow: 0 2px 8px rgba(15,23,42,.18); }
.vm__filter { display: flex; flex-direction: column; font-size: 10px; color: #6b7280; text-transform: uppercase; letter-spacing: .04em; }
.vm__select { font-size: 13px; padding: 4px 6px; border: 1px solid #d1d5db; border-radius: 6px; background: #fff; max-width: 140px; }
.vm__reset { font-size: 12px; color: #0b5d3b; background: none; border: 0; text-decoration: underline; cursor: pointer; padding: 4px; }
.vm__count { font-size: 12px; color: #374151; margin-left: 4px; }

/* Layer toggle + legend */
.vm__tools { position: absolute; z-index: 1000; left: 12px; bottom: 28px; display: flex; flex-direction: column; gap: 8px; align-items: flex-start; }
.vm__layer { font-size: 13px; font-weight: 600; padding: 8px 12px; background: #fff; border: 1px solid #d1d5db; border-radius: 8px; box-shadow: 0 2px 8px rgba(15,23,42,.2); cursor: pointer; min-height: 40px; }
.vm__legend { display: flex; flex-direction: column; gap: 4px; background: rgba(255,255,255,.94); border-radius: 8px; padding: 8px 10px; font-size: 12px; box-shadow: 0 2px 8px rgba(15,23,42,.2); }
.vm__legend span { display: flex; align-items: center; gap: 6px; }
.vm-dot { width: 10px; height: 10px; border-radius: 50%; display: inline-block; }
.vm-dot--verified, .vm-pin--verified { background: #059669; }
.vm-dot--approved, .vm-pin--approved { background: #2563eb; }
.vm-dot--listed, .vm-pin--listed { background: #64748b; }
.vm__status { position: absolute; z-index: 1000; top: 50%; left: 50%; transform: translate(-50%, -50%); background: rgba(255,255,255,.95); padding: 10px 16px; border-radius: 10px; font-size: 14px; box-shadow: 0 4px 16px rgba(15,23,42,.25); }
.vm__status:empty { display: none; }
.vm__retry { border: 0; background: none; font-size: 18px; cursor: pointer; vertical-align: middle; }

/* Pins and clusters */
.vm-pin-wrap, .vm-cluster-wrap { background: none; border: 0; }
.vm-pin { display: block; width: 26px; height: 26px; border-radius: 50% 50% 50% 0; transform: rotate(-45deg); border: 2px solid #fff; box-shadow: 0 2px 6px rgba(0,0,0,.45); }
.vm-cluster { display: flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 50%; background: #0f172a; color: #fff; font-weight: 700; font-size: 14px; border: 3px solid rgba(255,255,255,.85); box-shadow: 0 2px 8px rgba(0,0,0,.45); }
.leaflet-marker-icon:focus-visible { outline: 3px solid #fbbf24; outline-offset: 2px; border-radius: 6px; }

/* Layout plan laid on the photo: fades in; never intercepts the map's pointer events. */
.vm-overlay { position: absolute; left: 0; top: 0; max-width: none !important; max-height: none !important; transform-origin: 0 0; pointer-events: none; transition: opacity .8s ease; }

/* Details panel: right side on desktop, bottom sheet on phones. */
.vm-panel { position: absolute; z-index: 1200; top: 0; right: 0; bottom: 0; width: min(420px, 100%); background: #fff; box-shadow: -8px 0 28px rgba(15,23,42,.3); transform: translateX(105%); visibility: hidden; transition: transform .45s cubic-bezier(.2,.8,.2,1), visibility 0s linear .45s; overflow-y: auto; overscroll-behavior: contain; }
.vm-panel[data-open="true"] { transform: translateX(0); visibility: visible; transition: transform .45s cubic-bezier(.2,.8,.2,1), visibility 0s; }
.vm__filters-toggle { display: none; }
@media (max-width: 640px) {
  .vm__filters-toggle { display: inline-flex; align-items: center; height: 44px; padding: 0 14px; font-size: 14px; font-weight: 600; background: #fff; border: 1px solid #d1d5db; border-radius: 10px; box-shadow: 0 2px 8px rgba(15,23,42,.18); cursor: pointer; }
  .vm__filters { display: none; width: 100%; }
  .vm__filters[data-open="true"] { display: flex; }
  .vm__bar { right: 12px; }
  .vm-panel { top: auto; left: 0; right: 0; width: auto; height: 74%; border-radius: 16px 16px 0 0; box-shadow: 0 -8px 28px rgba(15,23,42,.3); transform: translateY(105%); }
  .vm-panel[data-open="true"] { transform: translateY(0); }
  .vm__tools { bottom: 12px; }
  .vm[data-panel-open] .vm__tools { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  .vm-panel, .vm-panel[data-open="true"], .vm-overlay { transition: none; }
}
.vm-panel__body { min-height: 100%; }
.vm-panel__article { padding: 16px 16px 28px; }
.vm-pad { padding: 20px; }
.vm-panel__head { display: flex; justify-content: space-between; gap: 8px; align-items: flex-start; }
.vm-panel__title { font-size: 20px; line-height: 1.25; font-weight: 700; color: #0f172a; margin: 0; }
.vm-panel__village { font-size: 13px; color: #6b7280; margin: 2px 0 0; }
.vm-panel__progress { display: inline-block; margin: 6px 0 0; padding: 2px 10px; border-radius: 999px; background: #FEF3C7; color: #92400E; font-size: 12px; font-weight: 700; }
.vm-panel__actions { display: flex; gap: 4px; flex-shrink: 0; }
.vm-icon { width: 40px; height: 40px; display: inline-flex; align-items: center; justify-content: center; border-radius: 50%; border: 0; background: #f3f4f6; color: #374151; cursor: pointer; }
.vm-icon:hover { background: #e5e7eb; }
.vm-badge { display: inline-block; font-size: 12px; font-weight: 700; padding: 4px 10px; border-radius: 999px; margin: 10px 0 0; }
.vm-badge--verified { background: #d1fae5; color: #065f46; border: 1px solid #6ee7b7; }
.vm-price { font-size: 26px; font-weight: 800; color: #0b5d3b; margin: 12px 0 0; }
.vm-price small { font-size: 13px; font-weight: 600; color: #6b7280; }
.vm-price__from { font-size: 13px; color: #374151; margin: 2px 0 0; }
.vm-h { font-size: 12px; text-transform: uppercase; letter-spacing: .05em; color: #6b7280; margin: 18px 0 6px; font-weight: 700; }
.vm-muted { color: #6b7280; font-size: 13px; }
.vm-chips { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px; }
.vm-chip { font-size: 12px; background: #eff6ff; color: #1e3a8a; border: 1px solid #bfdbfe; border-radius: 8px; padding: 4px 8px; }
.vm-chip span { font-family: ui-monospace, monospace; color: #374151; }
.vm-facts { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 14px; margin: 14px 0 0; }
.vm-facts dt { font-size: 11px; color: #6b7280; text-transform: uppercase; letter-spacing: .04em; }
.vm-facts dd { margin: 0; font-size: 15px; font-weight: 600; color: #111827; }
.vm-facts dd small { font-weight: 400; color: #6b7280; font-size: 12px; }
.vm-bar { height: 6px; border-radius: 3px; background: #e5e7eb; margin-top: 8px; overflow: hidden; }
.vm-bar i { display: block; height: 100%; background: #059669; }
.vm-toggle { margin-top: 14px; font-size: 13px; font-weight: 600; padding: 8px 12px; border-radius: 8px; border: 1px solid #d1d5db; background: #fff; cursor: pointer; min-height: 40px; }
.vm-toggle[aria-pressed="true"] { background: #ecfdf5; border-color: #6ee7b7; }
.vm-photos { display: flex; gap: 8px; overflow-x: auto; scroll-snap-type: x mandatory; padding-bottom: 6px; }
.vm-photo { width: 78%; max-width: 300px; height: auto; aspect-ratio: 3 / 2; object-fit: cover; border-radius: 10px; scroll-snap-align: start; flex-shrink: 0; background: #f3f4f6; }
.vm-cta { display: flex; flex-direction: column; gap: 8px; margin-top: 18px; }
.vm-btn { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: 0 16px; border-radius: 10px; font-weight: 700; font-size: 14px; text-decoration: none; border: 1px solid transparent; cursor: pointer; }
.vm-btn--primary { background: #0b5d3b; color: #fff; }
.vm-btn--primary:hover { background: #094a2f; }
.vm-btn--primary:disabled { opacity: .6; cursor: wait; }
.vm-btn--ghost { background: #fff; color: #0b5d3b; border-color: #0b5d3b; }
.vm-btn--block { width: 100%; }
.vm-lead, .vm-gate { margin-top: 22px; padding-top: 4px; border-top: 1px solid #e5e7eb; }
.vm-field { display: block; margin-top: 10px; font-size: 12px; color: #374151; font-weight: 600; }
.vm-field input, .vm-field textarea { display: block; width: 100%; margin-top: 4px; border: 1px solid #d1d5db; border-radius: 8px; padding: 10px; font-size: 16px; font-weight: 400; }
.vm-check { display: flex; gap: 8px; align-items: flex-start; margin: 12px 0; font-size: 12px; color: #374151; }
.vm-check input { margin-top: 2px; width: 18px; height: 18px; flex-shrink: 0; }
.vm-form__error { color: #b91c1c; font-size: 13px; margin: 6px 0; }
.vm-thanks { background: #ecfdf5; color: #065f46; border-radius: 8px; padding: 12px; font-size: 14px; margin-top: 12px; }
.vm-gate { background: #fffbeb; border-radius: 10px; padding: 12px; border: 1px solid #fde68a; }
/* Free-views gate: veil the detail section, keep the overview and the enquiry form. */
.vm-panel--gated [data-gated-section] { display: none; }

/* Placement tool corner handles */
.vm-handle { display: flex; align-items: center; justify-content: center; width: 30px; height: 30px; border-radius: 50%; background: #fbbf24; color: #111827; font-size: 11px; font-weight: 800; border: 2px solid #fff; box-shadow: 0 2px 6px rgba(0,0,0,.5); cursor: grab; }

/* ── Location & distances (docs/venture-location-brief.md §3) ─────────────────────────────── */
.vm-pin--target { background: #f59e0b; }
.vm-loc__sub { margin: 14px 0 4px; font-size: 13px; font-weight: 700; color: #111827; }
.vm-loc__kind { margin: 12px 0 2px; font-size: 12px; font-weight: 600; color: #374151; }
.vm-loc__list { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.vm-loc__row { display: grid; gap: 1px; width: 100%; min-height: 44px; padding: 8px 12px; text-align: left; background: #f8fafc; border: 1px solid #e5e7eb; border-radius: 10px; cursor: pointer; font: inherit; color: #111827; }
.vm-loc__row:hover { background: #f1f5f9; }
.vm-loc__row:focus-visible { outline: 2px solid #2563eb; outline-offset: 2px; }
.vm-loc__row[aria-pressed="true"] { border-color: #2563eb; background: #eff6ff; }
.vm-loc__name { font-size: 14px; font-weight: 600; }
.vm-loc__place { font-size: 13px; color: #374151; }
.vm-loc__dist { font-size: 13px; color: #4b5563; }
.vm-loc__tag { font-style: normal; font-size: 11px; font-weight: 700; color: #047857; background: #ecfdf5; border-radius: 999px; padding: 1px 7px; margin-left: 4px; }
.vm-loc__note { margin-top: 10px; }
.vm-loc__note a { color: #1d4ed8; text-decoration: underline; }
/* Warm paper chrome and ink/gold selection: docs/design/venture-map-design.md. */
.vm { color: #15241C; font-family: var(--font-sans), sans-serif; background: #F4F1E9; }
.vm h2, .vm h3, .vm-price, .vp-fact-grid dd { font-family: var(--font-display), sans-serif; }
.vm button:focus-visible, .vm summary:focus-visible, .vm input:focus-visible, .vm path:focus-visible { outline: 2px solid #D8A93A; outline-offset: 2px; }
.vm-panel { box-shadow: -8px 0 28px #15241c22; }
.vm-panel__article { padding: 18px; }
.vm-panel__head { position: sticky; top: -18px; z-index: 2; background: white; padding-block: 12px; }
.vm-panel__title { color: #15241C; font-size: 22px; }
.vm-panel__village { color: #6E7A71; }
.vm-chip { background: #E7F3EB; border: 1px solid #cce4d4; color: #115C39; border-radius: 999px; max-width: 100%; overflow-wrap: anywhere; }
.vm-chip span { color: #46514A; font-family: var(--font-mono), monospace; font-size: 10px; }
.vm-facts { grid-template-columns: repeat(4,minmax(0,1fr)); gap: 6px; }
.vm-facts > div { background: #FBF9F4; border: 1px solid #E8E3D8; border-radius: 12px; padding: 10px 6px; }
.vm-facts dd { font-size: 15px; }
.vm-facts dd small { display: block; }
.vm-trust { background: linear-gradient(135deg,#0a3f2b,#0B5D3B 60%); border-radius: 12px; padding: 14px; color: white; display: flex; align-items: center; gap: 12px; margin-top: 16px; }
.vm-trust-ring { border: 5px solid #ffffff80; border-top-color: white; border-radius: 50%; width: 48px; height: 48px; flex-shrink: 0; display: grid; place-items: center; font-size: 12px; }
.vm-trust strong { display: block; font-size: 15px; }
.vm-trust small { color: #F7EFDB; font-size: 12px; }
.vm-panel__footer { position: sticky; bottom: -28px; background: white; border-top: 1px solid #E8E3D8; padding: 12px 0; display: flex; gap: 8px; z-index: 2; }
.vm-panel__footer > * { flex: 1; padding: 6px; font-size: 13px; }
.vm[data-plots] .vm__bar { max-width: calc(100% - 456px); }
.vm[data-plots] .vm__search { flex: 0 0 235px; min-width: 160px; }
.vm[data-plots] .vm__input { border-radius: 999px; height: 40px; font-size: 13px; }
.vm[data-plots] .vm__filters, .vm[data-plots] .vm__legend, .vm[data-plots] .vm__filters-toggle { display: none; }
.vp-tools { display: contents; }
.vp-filter-row { display: flex; gap: 6px; flex-wrap: wrap; }
.vp-filter-row details { position: relative; }
.vp-filter-row summary, .vp-corner-filter { list-style: none; border-radius: 999px; background: white; border: 1px solid #E8E3D8; padding: 10px 13px; font-size: 12px; font-weight: 600; cursor: pointer; min-height: 40px; }
/* Drawn, not a ⌄ glyph: browsers without a symbol font showed it as a box (owner 2026-10-31). */
.vp-filter-row summary::after { content: ''; display: inline-block; width: 6px; height: 6px; margin-left: 8px; border-right: 1.5px solid #6E7A71; border-bottom: 1.5px solid #6E7A71; transform: translateY(-2px) rotate(45deg); }
.vp-filter-row details[open] > :not(summary) { background: #fff; padding: 12px; box-shadow: 0 8px 24px #15241c22; border-radius: 10px; min-width: 170px; }
.vp-filter-row details > label, .vp-filter-row fieldset { position: absolute; top: 44px; left: 0; z-index: 5; }
.vp-filter-row details > label + label { top: 115px; }
.vp-filter-row fieldset label { display: flex; padding: 6px; gap: 8px; }
.vp-filter-row input[type=number], .vp-filter-row select { width: 140px; display: block; border: 1px solid #CFC8B8; border-radius: 6px; padding: 6px; }
.vp-corner-filter { display: flex; gap: 6px; align-items: center; }
.vp-count { background: #FBF9F4ed; padding: 5px 10px; font-size: 12px; border-radius: 7px; margin: 0; }
.vp-best { background: #FBF2DD; color: #7E5710; border: 1px solid #D8A93A66; border-radius: 999px; padding: 6px 12px; font-size: 11px; cursor: pointer; }
.vp-legend { background: #fffffff0; border: 1px solid #E8E3D8; border-radius: 8px; padding: 8px 10px; box-shadow: 0 2px 8px #15241c22; min-width: 170px; }
.vp-legend button { display: flex; align-items: center; gap: 8px; width: 100%; padding: 4px 0; font-size: 12px; color: #46514A; background: none; border: 0; cursor: pointer; }
.vp-legend small { margin-left: auto; color: #6E7A71; }
.vp-swatch { width: 18px; height: 12px; border: 1.5px solid #177A47; border-radius: 2px; background: #CDEBD3; }
.vp-swatch--reserved { background: #D8A93A88; border: 2px dashed #7E5710; }
.vp-swatch--sold { background: repeating-linear-gradient(45deg,#ffffff55 0 1px,transparent 1px 6px),#2E3832; border-color: #15241C; }
.vp-swatch--mortgage { background: repeating-linear-gradient(45deg,#3B4BA088 0 1px,transparent 1px 7px),repeating-linear-gradient(-45deg,#3B4BA088 0 1px,transparent 1px 7px),#2A6FDB66; border-color: #3B4BA0; }
.vp-swatch--blocked { background: repeating-linear-gradient(0deg,#46514A66 0 1px,transparent 1px 6px),#9AA39B66; border-color: #46514A; }
.vp-layout { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; background: #fffffff0; padding: 8px; border: 1px solid #E8E3D8; border-radius: 8px; font-size: 11px; }
.vp-layout .vm-toggle { margin: 0; min-height: 30px; padding: 4px 8px; }
.vp-layout input { width: 110px; accent-color: #0B5D3B; }
.vp-layout output { min-width: 32px; }
.vp-label-wrap { background: none; border: 0; }
.vp-label { display: flex; justify-content: center; align-items: center; flex-wrap: wrap; width: 100%; height: 100%; padding: 1px 4px; background: #ffffffeb; border-radius: 6px; box-shadow: 0 1px 2px #15241c30; color: #15241C; font: 700 11px/1.1 var(--font-display),sans-serif; white-space: nowrap; }
.vp-label small { display: block; width: 100%; text-align: center; font: 500 10px/1.1 var(--font-sans),sans-serif; color: #46514A; }
.vp-label i { display: inline-block; font-style: normal; margin-left: 3px; font-size: 10px; }
.vp-label--selected { background: #15241C; color: white; }
.vp-label--selected small { color: white; }
.vp-index { background: #C0832B; color: white; border: 2px solid white; border-radius: 50%; font: 700 11px/14px var(--font-display),sans-serif; text-align: center; }
.vm .leaflet-interactive { transition: fill-opacity .12s ease-out,stroke-width .12s ease-out,stroke .12s ease-out; shape-rendering: geometricPrecision; }
.vp-popover { position: absolute; z-index: 1150; width: 320px; max-height: calc(100% - 160px); overflow: auto; border-radius: 16px; border: 1px solid #E8E3D8; box-shadow: 0 20px 25px -5px #15241c2e,0 8px 10px -6px #15241c1f; background: white; animation: vp-enter .16s cubic-bezier(.2,.8,.2,1); }
.vp-card { color: #15241C; font: 14px/1.5 var(--font-sans),sans-serif; padding: 16px; }
.vp-card:focus { outline: none; }
.vp-card { position: relative; }
.vp-card header { display: flex; gap: 8px; align-items: center; margin-bottom: 12px; flex-wrap: wrap; padding-right: 44px; }
.vp-card h3 { font-size: 20px; font-weight: 700; margin: 0; }
.vp-card header button { position: absolute; top: 12px; right: 12px; margin: 0; border: 0; border-radius: 50%; width: 32px; min-height: 32px; padding: 0; background: #EEEAE0; color: #46514A; font-size: 20px; }
.vp-status { display: inline-block; border-radius: 999px; padding: 4px 8px; font-size: 10px; font-weight: 700; text-transform: uppercase; background: #E7F3EB; color: #115C39; border: 1px solid #cce4d4; }
.vp-status--reserved { background: #FBF2DD; color: #7E5710; border-color: #D8A93A; }
.vp-status--blocked, .vp-status--sold { background: #EEEAE0; color: #46514A; border-color: #CFC8B8; }
.vp-status--mortgage { background: #EEF1FB; color: #3B4BA0; }
.vp-facing { display: flex; gap: 10px; align-items: center; margin-bottom: 16px; }
.vp-facing small { display: block; color: #6E7A71; font-size: 11px; }
.vp-compass { width: 36px; height: 36px; flex-shrink: 0; }
.vp-fact-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px 12px; margin: 0; }
.vp-fact-grid dt { color: #6E7A71; text-transform: uppercase; font-size: 10px; letter-spacing: .04em; margin-bottom: 3px; }
.vp-fact-grid dd { font-size: 15px; font-weight: 600; margin: 0; }
.vp-fact-grid small { font: 400 11px/1.5 var(--font-sans),sans-serif; display: block; color: #6E7A71; margin-top: 2px; }
.vp-price-fact dd { color: #073D29; font-size: 23px; font-weight: 800; }
.vp-trust { background: #FBF2DD; border-left: 3px solid #C0832B; border-radius: 0 8px 8px 0; padding: 10px; font-size: 12px; color: #7E5710; margin: 16px 0; }
.vp-warning { color: #7E5710; background: #FBF2DD; padding: 8px; font-size: 12px; }
.vp-button { border: 1px solid #0B5D3B; border-radius: 10px; color: #0B5D3B; background: white; padding: 7px 10px; font-size: 12px; font-weight: 600; min-height: 40px; cursor: pointer; }
.vp-button:disabled { opacity: .5; cursor: default; }
.vp-actions .vp-primary { width: 100%; background: #0B5D3B; color: white; min-height: 44px; font-size: 14px; }
.vp-actions-row { display: flex; gap: 6px; margin-top: 8px; }
.vp-actions-row > * { flex: 1; padding: 6px; }
.vp-card footer { font-size: 10px; color: #6E7A71; margin-top: 12px; }
.vp-shortlist { position: absolute; z-index: 1250; bottom: 20px; left: calc((100% - 420px)/2); transform: translateX(-50%); max-width: 760px; display: flex; align-items: center; gap: 8px; padding: 8px 8px 8px 18px; background: #15241C; color: white; border-radius: 999px; box-shadow: 0 8px 24px #15241c59; white-space: nowrap; }
.vp-shortlist[hidden] { display: none; }
.vp-shortlist-title { font-size: 11px; color: #CFC8B8; }
.vp-shortlist .vp-button { background: #ffffff19; color: white; border: 1px solid #ffffff40; border-radius: 10px; font-size: 11px; }
.vp-shortlist .vp-button:last-child { background: #1F8A56; }
.vp-shortlist strong { font-family: var(--font-display),sans-serif; font-size: 15px; }
.vp-dialog { width: min(760px,95vw); max-height: 85vh; overflow: auto; border: 1px solid #E8E3D8; padding: 24px; border-radius: 16px; background: #FBF9F4; color: #15241C; }
.vp-dialog::backdrop { background: #15241c8c; }
.vp-dialog h2 { font: 700 22px var(--font-display),sans-serif; display: inline-block; margin-right: 20px; }
.vp-dialog label { display: flex; align-items: center; justify-content: space-between; margin-block: 16px; font-size: 14px; }
.vp-dialog input { border: 1px solid #CFC8B8; border-radius: 8px; padding: 10px; max-width: 110px; }
.vp-dialog output { display: block; background: #E7F3EB; border-radius: 12px; padding: 20px; margin-block: 18px; color: #073D29; font-size: 22px; font-family: var(--font-display),sans-serif; }
.vp-compare { display: flex; gap: 20px; overflow-x: auto; margin-top: 20px; }
.vp-compare section { min-width: 250px; padding: 14px; background: white; border: 1px solid #E8E3D8; border-radius: 12px; }
.vp-context { padding: 20px 0; font-size: 14px; line-height: 1.5; color: #46514A; }
.vp-context nav { display: flex; overflow-x: auto; border-bottom: 1px solid #E8E3D8; gap: 14px; margin-bottom: 16px; }
.vp-context nav .vp-button { border: 0; border-radius: 0; background: none; padding: 8px 0; color: #6E7A71; white-space: nowrap; font-size: 11px; }
.vp-context nav [aria-selected=true] { color: #073D29; border-bottom: 2px solid #0B5D3B; }
.vp-context dl { margin-top: 14px; }
.vp-context dt { font-size: 11px; text-transform: uppercase; color: #6E7A71; }
.vp-context dd { margin: 0 0 12px; }
.vp-toast { position: absolute; bottom: 90px; left: 50%; transform: translateX(-50%); padding: 12px; border-radius: 10px; background: #FBF2DD; border: 1px solid #C0832B; color: #7E5710; z-index: 1500; }
.vp-sheet { position: absolute; z-index: 1300; bottom: 0; left: 0; right: 0; border-radius: 20px 20px 0 0; background: white; box-shadow: 0 -8px 28px #15241c33; overflow-y: auto; transition: height .2s ease-out; }
.vp-sheet[data-snap=peek] { height: 120px; }
.vp-sheet[data-snap=half] { height: 55%; }
.vp-sheet[data-snap=full] { height: 92%; }
.vp-sheet-handle { display: block; width: 100%; border: 0; background: white; color: #CFC8B8; min-height: 24px; padding: 0; touch-action: none; }
@keyframes vp-enter { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: translateY(0); } }
@media (max-width: 640px) {
  .vm[data-plots] .vm__bar { max-width: none; }
  .vm[data-plots] .vm__search { display: none; }
  .vp-filter-row { gap: 4px; max-width: 100%; }
  .vp-filter-row summary, .vp-corner-filter { padding: 10px; min-height: 44px; }
  .vp-count { font-size: 11px; }
  .vp-shortlist { left: 50%; bottom: 56%; max-width: calc(100% - 24px); padding: 8px 12px; border-radius: 999px; flex-wrap: wrap; justify-content: center; gap: 5px; }
  .vp-shortlist .vp-button { min-height: 32px; font-size: 10px; padding: 4px 7px; }
  .vp-shortlist-title { font-size: 10px; }
  .vp-sheet .vp-card { padding: 4px 16px 18px; }
  .vp-card header button { min-height: 44px; width: 44px; }
  .vp-button { min-height: 44px; }
  .vm-facts { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .vp-dialog { padding: 18px; }
}
html[lang=te] .vm, html[lang=te] [class^=vp-] { font-family: var(--font-sans),"Noto Sans Telugu","Kohinoor Telugu",sans-serif; line-height: 1.55; }
html[lang=te] .vp-popover { width: 344px; }
html[lang=te] .vp-status, html[lang=te] .vm-chip { white-space: normal; height: auto; min-height: 28px; line-height: 1.3; }
html[lang=te] .vp-fact-grid dd { font-size: 14px; }
@media (prefers-reduced-motion: reduce) { .vm *, .vm .leaflet-interactive { animation: none !important; transition: none !important; } }
.vp-table-scroll { overflow-x: auto; margin: 20px 0; }
.vp-compare-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.vp-compare-table th, .vp-compare-table td { border-bottom: 1px solid #E8E3D8; padding: 12px; text-align: left; min-width: 160px; vertical-align: top; }
.vp-compare-table th:first-child { font-size: 11px; text-transform: uppercase; color: #6E7A71; min-width: 110px; }
.vp-compare-table th .vp-compass { display: block; width: 24px; height: 24px; margin-top: 8px; }
.vp-best-value { background: #E7F3EB; color: #115C39; }
.vp-best-value small { display: block; font-size: 10px; text-transform: uppercase; }
@media (max-width: 640px) {
  .vp-filter-row { display: none; }
  .vp-filter-row[data-open=true] { position: fixed; display: flex; flex-direction: column; top: 68px; bottom: 0; left: 0; right: 0; background: #FBF9F4; padding: 60px 20px 20px; overflow: auto; z-index: 1350; }
  .vp-filter-row details > label, .vp-filter-row fieldset { position: static; }
  .vp-filter-row details[open] > :not(summary) { box-shadow: none; }
  .vp-phone-filters { position: relative; z-index: 1360; border-radius: 999px; min-height: 44px; background: white; box-shadow: 0 2px 8px #15241c22; }
  .vp-count { margin-top: 7px; }
  .vp-sheet .vp-card .vp-trust { margin-block: 12px; }
}
.vm--flying .vm__map { animation: vm-flight 2.2s ease-in-out; }
.vm--flying::after { content: ''; pointer-events: none; position: absolute; inset: 0; z-index: 900; background: radial-gradient(ellipse at center,transparent 55%,#15241c59); animation: vm-vignette 2.2s ease-in-out; }
.vm--flying .vm__bar { opacity: .6; pointer-events: none; }
@keyframes vm-flight { 0%,100% { filter: saturate(1) blur(0); } 40% { filter: saturate(.85) blur(1.5px); } }
@keyframes vm-vignette { 0%,100% { opacity: 0; } 30% { opacity: .9; } }
body:has(.vm) { overflow: hidden; }
@media (max-width: 640px) {
  .vp-sheet[data-snap=half] { height: 55vh; }
  .vp-sheet[data-snap=full] { height: 92vh; }
  .vp-shortlist { bottom: calc(55vh + 10px); }
  .vp-sheet .vp-card header { margin-bottom: 6px; }
  .vp-sheet .vp-facing { margin-bottom: 10px; }
  .vp-sheet .vp-fact-grid { gap: 8px 12px; }
  .vp-sheet .vp-card .vp-trust { padding: 8px 10px; margin: 10px 0; }
  .vp-sheet .vp-card footer { margin-top: 8px; }
}
.vp-popover { overflow: visible; }
.vp-popover .vp-card { max-height: calc(100vh - 160px); overflow-y: auto; border-radius: 16px; }
.vp-popover::before { content: ''; position: absolute; width: 12px; height: 12px; background: white; border-left: 1px solid #E8E3D8; border-bottom: 1px solid #E8E3D8; transform: rotate(45deg); left: -7px; top: 24px; }
.vp-popover[data-side=left]::before { left: auto; right: -7px; transform: rotate(225deg); }
.vp-popover[data-side=above]::before { display: none; }
.vm-panel__footer { bottom: 0; margin: 0 -18px -18px; padding: 12px 18px; }
@media (max-width: 640px) {
  .vp-shortlist { flex-wrap: nowrap; width: max-content; height: 48px; padding: 6px 12px; gap: 8px; }
  .vp-shortlist-title { white-space: nowrap; }
}
.vp-dialog { position: fixed; inset: 0; margin: auto; height: fit-content; }
.vp-dialog > .vp-button:first-of-type { float: right; }
.vm--adjusting-opacity .vm-overlay { transition: none; }
.vp-status--premium { background: #FFF4D6; color: #7A4F00; border-color: #B07A12; font-weight: 700; }
.vp-status--corner { background: #F7EFDB; color: #7E5710; border-color: #D8A93A66; }
.vp-empty-slot { border: 1px dashed #ffffff40; border-radius: 10px; padding: 10px; color: #CFC8B8; font-size: 12px; }
.vp-filter-row details[data-active=true] summary, .vp-corner-filter:has(input:checked) { color: #073D29; background: #E7F3EB; border-color: #177A47; }
.vm-icon { background: #EEEAE0; color: #46514A; }
.vm-icon:hover { background: #E8E3D8; }
.vm__input, .vm__select { border-color: #E8E3D8; }
html[lang=te] .vm h2, html[lang=te] .vm h3, html[lang=te] .vp-fact-grid dd { font-family: var(--font-display),"Noto Sans Telugu","Kohinoor Telugu",sans-serif; }
.vp-layout-segment { display: inline-flex; gap: 4px; }
.vp-layout-segment .vm-toggle { border-color: #E8E3D8; border-radius: 5px; }
.vp-layout-segment [aria-pressed=true] { background: #E7F3EB; color: #073D29; border-color: #a8cbb6; }
.vp-emi input { max-width: 145px; }
.vp-emi output strong { display: block; font-size: 24px; }
.vp-emi output small { display: block; margin-top: 8px; font: 400 13px/1.5 var(--font-sans),sans-serif; }
.vp-tenure { display: flex; gap: 8px; justify-content: flex-end; }
.vp-tenure [aria-pressed=true] { background: #E7F3EB; }
.vp-sheet-summary, .vp-sheet-peek { display: none; }
.vp-sheet-scrim { position: absolute; inset: 0; background: #15241c59; z-index: 1290; }
.vp-map-layout { position: absolute; left: 12px; bottom: 124px; z-index: 1250; box-shadow: 0 2px 8px #15241c30; }
.vp-map-layout[hidden] { display: none; }
@media (max-width: 640px) {
  .vp-sheet { transition: height .28s cubic-bezier(.2,.8,.2,1); }
  .vp-sheet[data-snap=peek] { height: 112px; overflow: hidden; }
  .vp-sheet[data-snap=half] { height: 52vh; overflow: hidden; }
  .vp-sheet[data-snap=full] { height: 92vh; overflow-y: auto; }
  .vp-sheet--dragging { transition: none; overflow: hidden; }
  .vp-sheet-handle { min-height: 32px; height: 32px; position: sticky; top: 0; z-index: 4; border-radius: 20px 20px 0 0; }
  .vp-sheet:not([data-snap=full]) .vp-card { touch-action: none; }
  .vp-sheet[data-snap=peek] .vp-card, .vp-sheet[data-snap=full] .vp-card { display: none; }
  .vp-sheet[data-snap=full][data-show-plot=true] .vp-card { display: block; }
  .vp-sheet[data-snap=peek] .vp-sheet-peek { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; justify-content: center; padding: 4px 12px; }
  .vp-sheet[data-snap=full] .vp-sheet-summary { display: block; width: 100%; position: sticky; top: 32px; z-index: 3; border-radius: 0; border-width: 0 0 1px; background: #FBF9F4; text-align: left; }
  .vp-sheet .vm-panel__head { position: static; }
  .vp-sheet .vp-layout { margin-top: 16px; }
  .vp-sheet .vp-legend { margin-top: 10px; }
}
.vp-count-row { flex-basis: 100%; }
.vp-count { width: fit-content; }
.vp-quick-picks { flex-basis: 100%; display: flex; flex-wrap: nowrap; gap: 6px; overflow-x: auto; scrollbar-width: none; padding-bottom: 2px; }
.vp-quick-picks::-webkit-scrollbar { display: none; }
.vp-best { white-space: nowrap; flex: none; }
.vp-best--active { background: #0B5D3B; color: #fff; border-color: #0B5D3B; }
.vm-alignment-note { margin: 8px 0 12px; }
.vp-best[hidden], .vm__reset[hidden] { display: none; }
.vp-filter-row fieldset { display: grid; grid-template-columns: 1fr 1fr; min-width: 250px !important; }
@media (max-width: 640px) { .vp-count-row { flex-basis: auto; } .vp-quick-picks { display: none; } }
@media (max-width: 640px) {
  .vp-venture-sheet { z-index: 1300; }
  .vp-venture-handle { display: block; width: 100%; min-height: 44px; border: 0; border-radius: 20px 20px 0 0; background: white; color: #CFC8B8; }
  .vp-sheet-handle { min-height: 44px; height: 44px; }
  .vp-sheet[data-snap=full] .vp-sheet-summary { top: 44px; }
}
@media (max-width: 640px) {
  .vp-sheet > .vm-panel { position: static; height: auto !important; width: 100%; overflow: visible; box-shadow: none; transform: none; visibility: visible; border-radius: 0; }
  .vp-sheet > .vm-panel > .vp-venture-handle { display: none; }
}
/* Open in Google Maps / Directions (panel) */
.vm-links { display: flex; flex-wrap: wrap; gap: 8px; margin: 10px 0 4px; }
.vm-link { display: inline-flex; align-items: center; min-height: 40px; padding: 0 14px; border: 1px solid #0b5d3b; border-radius: 8px; color: #0b5d3b; font-size: 14px; font-weight: 600; text-decoration: none; background: #fff; }
.vm-link:hover { background: #ecfdf5; }
.vm-link:focus-visible { outline: 2px solid #0b5d3b; outline-offset: 2px; }

/* ── Designed layout (venture_map/designed_layout.js): the DTCP drawing redrawn as vector layers ── */
.leaflet-layout-pane, .leaflet-layoutLabels-pane, .leaflet-plotLabels-pane { pointer-events: none; }
.leaflet-layout-pane path, .leaflet-plots-pane path { shape-rendering: geometricPrecision; }
.vd-label-wrap { background: none; border: 0; display: flex; align-items: center; justify-content: center; }
.vd-plot-number { display: block; width: 100%; text-align: center; color: #15241C; font: 800 1em/1 var(--font-display), sans-serif; letter-spacing: -.01em; text-shadow: 0 0 2px #FBF9F4, 0 0 2px #FBF9F4; }
.vd-plot-number small { display: block; font: 600 .72em/1.2 var(--font-sans), sans-serif; color: #3D4A42; letter-spacing: 0; text-shadow: none; }
.vd-plot-number--dark { color: #FFFFFF; text-shadow: 0 0 2px #15241C, 0 0 2px #15241C; }
.vd-plot-number--dark small { color: #E8E3D8; }
.vd-plot-number--dim { opacity: .4; }
.vd-plot-tag { display: block; margin-top: 1px; font: 800 .62em/1.1 var(--font-sans), sans-serif; font-style: normal; letter-spacing: .08em; text-shadow: none; }
.vd-plot-tag--sold { color: #FFFFFF; }
.vd-plot-tag--reserved { color: #6B4A00; }
.vd-plot-tag b { color: #F2C14E; }
.vd-plot-number--fresh { animation: vd-fresh 2.4s ease-in-out infinite; }
@keyframes vd-fresh { 0%, 100% { filter: drop-shadow(0 0 0 #F2C14E00); } 50% { filter: drop-shadow(0 0 4px #F2C14E); } }
@media (prefers-reduced-motion: reduce) { .vd-plot-number--fresh { animation: none; } }
.vp-status--zemindo { background: #0B5D3B; color: #fff; border-color: #0B5D3B; font-weight: 700; }
.vm-via-zemindo { color: #0B5D3B; font-weight: 700; }
.vd-site { display: flex; flex-direction: column; align-items: center; color: #FFFFFF; font: 700 1em/1.15 var(--font-display), sans-serif; white-space: nowrap; text-shadow: 0 1px 2px rgba(21,36,28,.7), 0 0 6px rgba(21,36,28,.5); }
.vd-site small { font: 500 .8em/1.15 var(--font-sans), sans-serif; opacity: .92; }
.vd-road { display: inline-block; color: #F4F1E9; font: 600 1em/1 var(--font-sans), sans-serif; letter-spacing: .08em; text-transform: uppercase; white-space: nowrap; opacity: .85; text-shadow: 0 0 2px #2E3832, 0 0 2px #2E3832; }
.vd-caption { display: inline-block; color: #FBF9F4; font: italic 500 11px/1 var(--font-sans), sans-serif; white-space: nowrap; opacity: .9; text-shadow: 0 0 3px #15241C, 0 0 3px #15241C; }
.vp-swatch { border-color: #CFC8B8; }
.vp-swatch--reserved { background: #D8A93A; border: 1.5px dashed #7E5710; }
.vp-swatch--sold { background: repeating-linear-gradient(45deg, #ffffff55 0 1px, transparent 1px 6px), #2E3832; }
.vp-swatch--mortgage { background: repeating-linear-gradient(45deg, #3B4BA088 0 1px, transparent 1px 7px), repeating-linear-gradient(-45deg, #3B4BA088 0 1px, transparent 1px 7px), #2A6FDB; }
.vp-swatch--blocked { background: repeating-linear-gradient(0deg, #46514A66 0 1px, transparent 1px 6px), #9AA39B; }
.vp-layout [data-drawing-toggle] { margin-left: 2px; }
.vp-layout [data-drawing-toggle][aria-pressed=true] { background: #FBF2DD; color: #7E5710; border-color: #D8A93A; }
.vm--adjusting-opacity .leaflet-layout-pane, .vm--adjusting-opacity .leaflet-plots-pane { transition: none; }
.leaflet-layout-pane, .leaflet-plots-pane, .leaflet-layoutLabels-pane, .leaflet-plotLabels-pane { transition: opacity .25s ease; }
@media (prefers-reduced-motion: reduce) { .leaflet-layout-pane, .leaflet-plots-pane, .leaflet-layoutLabels-pane, .leaflet-plotLabels-pane { transition: none; } }

/* North arrow (owner 2026-10-31). Sits clear of the panel on desktop and the bar on a phone. */
.vm-north { position: absolute; z-index: 1000; right: 12px; bottom: 96px; display: grid; place-items: center; width: 40px; height: 48px; border-radius: 12px; background: #fffffff0; box-shadow: 0 2px 8px #15241c33; pointer-events: none; }
.vm[data-panel-open] .vm-north { right: 432px; }
@media (max-width: 640px) { .vm-north { top: 64px; bottom: auto; right: 12px; width: 34px; height: 42px; } .vm[data-panel-open] .vm-north { right: 12px; } }

/* Zoom buttons clear of the open panel on desktop (they sat underneath it). */
@media (min-width: 641px) { .vm[data-panel-open] .leaflet-bottom.leaflet-right { right: 420px; } }

/* Phone filters: a bottom sheet with a title, close button and "Show N plots" (owner 2026-10-31). */
.vp-filter-head, .vp-filter-apply { display: none; }
@media (max-width: 640px) {
  .vp-filter-row[data-open=true] { top: auto; bottom: 0; max-height: 82dvh; padding: 0 16px; gap: 2px; border-radius: 20px 20px 0 0; box-shadow: 0 0 0 100vmax #15241c73; z-index: 1450; }
  .vp-filter-row[data-open=true] .vp-filter-head { display: flex; position: sticky; top: 0; z-index: 2; justify-content: space-between; align-items: center; padding: 16px 0 8px; background: #FBF9F4; font-size: 17px; }
  .vp-filter-close { position: relative; width: 40px; height: 40px; border-radius: 50%; border: 1px solid #E8E3D8; background: white; }
  .vp-filter-close::before, .vp-filter-close::after { content: ''; position: absolute; left: 11px; top: 19px; width: 17px; height: 2px; background: #15241C; transform: rotate(45deg); }
  .vp-filter-close::after { transform: rotate(-45deg); }
  .vp-filter-row[data-open=true] details { border-bottom: 1px solid #E8E3D8; padding-bottom: 10px; }
  .vp-filter-row[data-open=true] summary { border: 0; background: none; padding: 12px 0 6px; min-height: 0; font-size: 12px; text-transform: uppercase; letter-spacing: .04em; color: #6E7A71; pointer-events: none; }
  .vp-filter-row[data-open=true] summary::after { display: none; }
  .vp-filter-row[data-open=true] details[open] > :not(summary) { padding: 0; background: none; min-width: 0; }
  .vp-filter-row[data-open=true] input[type=number], .vp-filter-row[data-open=true] select { width: 100%; min-height: 44px; font-size: 16px; }
  .vp-filter-row[data-open=true] .vp-corner-filter { align-self: flex-start; margin-top: 12px; }
  .vp-filter-row[data-open=true] .vm__reset { align-self: flex-start; margin: 8px 0; }
  .vp-filter-row[data-open=true] .vp-filter-apply { display: block; position: sticky; bottom: 0; margin: 12px -16px 0; min-height: 56px; border: 0; background: #0B5D3B; color: white; font-size: 16px; font-weight: 700; padding-bottom: env(safe-area-inset-bottom, 0px); }
  .vp-tools:has(.vp-filter-row[data-open=true]) .vp-phone-filters { visibility: hidden; }
}
.vp-star { display: inline-block; width: 11px; height: 11px; margin-right: 5px; vertical-align: -1px; background: currentColor; clip-path: polygon(50% 0, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%); }
/* A number run along a narrow plot's long side, reading bottom to top. */
.vd-plot-number--upright { writing-mode: vertical-rl; transform: rotate(180deg); height: 100%; width: auto; margin-inline: auto; line-height: 1; }
/* Phone filter sheet above the venture sheet (the bar's stacking context sat under it), one column. */
@media (max-width: 640px) {
  .vm__bar:has(.vp-filter-row[data-open=true]) { z-index: 1460; }
  .vp-filter-row[data-open=true] { flex-wrap: nowrap; overflow-y: auto; overscroll-behavior: contain; }
  .vp-filter-row[data-open=true] > * { flex: 0 0 auto; }
}
