/* ============================================================
   DVchi Core : Front-end Styles
   Brand: Cyan #00C2D4 · Yellow #FFE900 · Dark #111
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');

:root {
  --dv-cyan:        #00C2D4;
  /* v1.2.0: standing rule, every button uses #07c5fb */
  --dv-btn:         #07c5fb;
  --dv-btn-dark:    #03B4E8;
  --dv-cyan-dark:   #0098A8;
  --dv-cyan-light:  #E0F9FC;
  --dv-yellow:      #FFE900;
  --dv-dark:        #111111;
  --dv-body:        #374151;
  --dv-muted:       #6B7280;
  --dv-border:      #E5E7EB;
  --dv-light:       #F8F8F4;
  --dv-white:       #FFFFFF;
  --dv-green:       #22C55E;
  --dv-amber:       #F59E0B;
  --dv-red:         #EF4444;
  --dv-radius:      10px;
  --dv-radius-sm:   6px;
  --dv-radius-lg:   16px;
  --dv-shadow:      0 4px 12px rgba(0,0,0,0.08);
  --dv-shadow-lg:   0 10px 28px rgba(0,0,0,0.12);
  --dv-font:        'Inter', -apple-system, sans-serif;
  --dv-transition:  0.2s ease;
}

/* ── Base ─────────────────────────────────────────────── */
.dvchi-core-wrap,
.dvchi-core-wrap * { box-sizing: border-box; }
.dvchi-core-wrap { font-family: var(--dv-font); color: var(--dv-body); }

/* ── Buttons ──────────────────────────────────────────── */
.dvchi-btn {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 10px 20px; border-radius: var(--dv-radius-sm);
  font-family: var(--dv-font); font-size: 0.9rem; font-weight: 600;
  cursor: pointer; border: 2px solid transparent;
  transition: all var(--dv-transition); text-decoration: none; white-space: nowrap;
}
.dvchi-btn-primary  { background: var(--dv-cyan);  color: #fff; border-color: var(--dv-cyan); }
.dvchi-btn-primary:hover { background: var(--dv-cyan-dark); border-color: var(--dv-cyan-dark); color: #fff; transform: translateY(-1px); box-shadow: 0 6px 16px rgba(0,194,212,0.35); }
.dvchi-btn-outline  { background: transparent; color: var(--dv-cyan); border-color: var(--dv-cyan); }
.dvchi-btn-outline:hover { background: var(--dv-cyan); color: #fff; }
.dvchi-btn-sm   { padding: 7px 14px; font-size: 0.82rem; }
.dvchi-btn-full { width: 100%; justify-content: center; }
.dvchi-btn-yellow { background: var(--dv-yellow); color: var(--dv-dark); border-color: var(--dv-yellow); }
.dvchi-btn-yellow:hover { opacity: .9; }
.dvchi-btn:disabled { opacity: .6; cursor: not-allowed; transform: none !important; box-shadow: none !important; }

/* ── Grid layouts ─────────────────────────────────────── */
.dvchi-grid { display: grid; gap: 20px; }
.dvchi-grid-2 { grid-template-columns: repeat(2, 1fr); }
.dvchi-grid-3 { grid-template-columns: repeat(3, 1fr); }
.dvchi-grid-4 { grid-template-columns: repeat(4, 1fr); }

/* ── Listing cards ────────────────────────────────────── */
.dvchi-listing-card {
  background: var(--dv-white); border: 1px solid var(--dv-border);
  border-radius: var(--dv-radius); overflow: hidden;
  transition: all var(--dv-transition);
  display: flex; flex-direction: column;
}
.dvchi-listing-card:hover {
  box-shadow: var(--dv-shadow-lg);
  transform: translateY(-3px);
  border-color: transparent;
}
.dvchi-card-img-wrap {
  position: relative; display: block;
  height: 200px; overflow: hidden; background: var(--dv-light);
}
.dvchi-card-img-wrap img {
  width: 100%; height: 100%; object-fit: cover;
  transition: transform 0.4s ease;
}
.dvchi-listing-card:hover .dvchi-card-img-wrap img { transform: scale(1.04); }
.dvchi-card-badge {
  position: absolute; top: 10px; left: 10px;
  background: var(--dv-cyan); color: #fff;
  font-size: 0.72rem; font-weight: 700;
  padding: 3px 10px; border-radius: 999px;
}
.dvchi-card-body { padding: 16px; flex: 1; display: flex; flex-direction: column; gap: 6px; }
.dvchi-card-body h3 { font-size: 1rem; font-weight: 600; color: var(--dv-dark); margin: 0; }
.dvchi-card-body h3 a { color: inherit; text-decoration: none; }
.dvchi-card-body h3 a:hover { color: var(--dv-cyan); }
.dvchi-card-meta { display: flex; gap: 10px; font-size: 0.8rem; color: var(--dv-muted); flex-wrap: wrap; }
.dvchi-card-rating { display: flex; align-items: center; gap: 6px; font-size: 0.82rem; }
.dvchi-stars { color: var(--dv-amber); letter-spacing: 1px; }
.dvchi-card-rating strong { color: var(--dv-dark); }
.dvchi-card-rating span { color: var(--dv-muted); }
.dvchi-card-body .dvchi-btn { margin-top: auto; align-self: flex-start; }

/* ── Filter bar ───────────────────────────────────────── */
.dvchi-filter-bar {
  background: var(--dv-white); border: 1px solid var(--dv-border);
  border-radius: var(--dv-radius); padding: 16px 20px;
  margin-bottom: 14px; grid-column: 1 / -1;
}
.dvchi-filter-top {
  display: flex; align-items: center; gap: 12px;
  margin-bottom: 14px; flex-wrap: wrap;
}
.dvchi-filter-top h4 { font-size: 0.9rem; font-weight: 600; color: var(--dv-dark); flex: 1; margin: 0; }
.dvchi-unit-toggle {
  display: flex; gap: 0; border: 1.5px solid var(--dv-border); border-radius: var(--dv-radius-sm); overflow: hidden;
}
.dvchi-unit-btn {
  padding: 5px 12px; font-size: 0.8rem; font-weight: 600;
  cursor: pointer; border: none; background: transparent; color: var(--dv-muted);
  transition: all var(--dv-transition);
}
.dvchi-unit-btn.active { background: var(--dv-cyan); color: #fff; }
.dvchi-filters-row { display: flex; gap: 12px; flex-wrap: wrap; align-items: flex-end; }
.dvchi-filter-group { display: flex; flex-direction: column; gap: 4px; }
.dvchi-filter-group label {
  font-size: 0.72rem; font-weight: 700; letter-spacing: 0.06em;
  text-transform: uppercase; color: var(--dv-muted);
}
.dvchi-filter-group select,
.dvchi-filter-group input {
  padding: 8px 12px; border: 1.5px solid var(--dv-border);
  border-radius: var(--dv-radius-sm); font-family: var(--dv-font);
  font-size: 0.88rem; color: var(--dv-dark); background: var(--dv-white);
  outline: none; transition: border-color var(--dv-transition);
  min-width: 130px;
}
.dvchi-filter-group select:focus,
.dvchi-filter-group input:focus { border-color: var(--dv-cyan); }

/* ── Nearby Map ───────────────────────────────────────── */
#dvchi-nearby-map { width: 100%; border-radius: var(--dv-radius); overflow: hidden; }
.dvchi-map-list { display: flex; flex-direction: column; gap: 8px; overflow-y: auto; max-height: 520px; }
.dvchi-map-list::-webkit-scrollbar { width: 4px; }
.dvchi-map-list::-webkit-scrollbar-thumb { background: var(--dv-border); border-radius: 2px; }
.dvchi-map-card {
  background: var(--dv-white); border: 1px solid var(--dv-border);
  border-radius: var(--dv-radius-sm); padding: 10px 12px;
  display: flex; align-items: center; gap: 10px; cursor: pointer;
  transition: border-color var(--dv-transition);
}
.dvchi-map-card:hover, .dvchi-map-card.active { border-color: var(--dv-cyan); }
.dvchi-map-card-icon {
  width: 36px; height: 36px; border-radius: 8px; display: flex;
  align-items: center; justify-content: center; font-size: 18px; flex-shrink: 0;
}
.dvchi-map-card-body { flex: 1; min-width: 0; }
.dvchi-map-card-body h5 {
  font-size: 0.82rem; font-weight: 600; color: var(--dv-dark);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; margin: 0 0 2px;
}
.dvchi-map-card-body .dist { font-size: 0.72rem; color: var(--dv-muted); }
.dvchi-map-card-body .rating { font-size: 0.72rem; color: var(--dv-amber); }
.dvchi-map-action {
  font-size: 0.72rem; font-weight: 600; padding: 4px 8px;
  border-radius: var(--dv-radius-sm); border: 1.5px solid var(--dv-cyan);
  color: var(--dv-cyan); background: transparent; cursor: pointer;
  white-space: nowrap; flex-shrink: 0; transition: all var(--dv-transition);
}
.dvchi-map-action:hover { background: var(--dv-cyan); color: #fff; }

/* Leaflet popup customisation */
.dvchi-popup { min-width: 200px; font-family: var(--dv-font); }
.dvchi-popup h4 { font-size: 0.9rem; font-weight: 600; margin: 0 0 4px; color: var(--dv-dark); }
.dvchi-popup .meta { font-size: 0.78rem; color: var(--dv-muted); margin-bottom: 6px; }
.dvchi-popup .stars { color: var(--dv-amber); font-size: 0.8rem; }
.dvchi-popup .actions { display: flex; gap: 6px; margin-top: 10px; }
.dvchi-popup .actions a {
  flex: 1; text-align: center; padding: 6px 4px; border-radius: var(--dv-radius-sm);
  font-size: 0.75rem; font-weight: 600; text-decoration: none; transition: all var(--dv-transition);
}
.dvchi-popup .actions .primary { background: var(--dv-cyan); color: #fff; }
.dvchi-popup .actions .secondary { border: 1px solid var(--dv-border); color: var(--dv-muted); }

/* ── Booking card ─────────────────────────────────────── */
.dvchi-booking-card {
  background: var(--dv-white); border: 1px solid var(--dv-border);
  border-radius: var(--dv-radius); padding: 24px; box-shadow: var(--dv-shadow-lg);
}
.dvchi-book-price {
  font-size: 1.8rem; font-weight: 700; color: var(--dv-cyan);
  font-family: var(--dv-font); margin-bottom: 4px;
}
.dvchi-book-price span { font-size: 0.9rem; color: var(--dv-muted); font-weight: 400; }
.dvchi-book-note { font-size: 0.75rem; color: var(--dv-muted); text-align: center; margin-top: 10px; }
.dvchi-booking-form { display: flex; flex-direction: column; gap: 12px; margin-top: 16px; }
.dvchi-form-field { display: flex; flex-direction: column; gap: 4px; }
.dvchi-form-field label { font-size: 0.78rem; font-weight: 700; color: var(--dv-muted); text-transform: uppercase; letter-spacing: 0.04em; }
.dvchi-form-field input,
.dvchi-form-field select,
.dvchi-form-field textarea {
  width: 100%; padding: 10px 14px; border: 1.5px solid var(--dv-border);
  border-radius: var(--dv-radius-sm); font-family: var(--dv-font);
  font-size: 0.92rem; color: var(--dv-dark); background: var(--dv-white);
  outline: none; transition: border-color var(--dv-transition);
}
.dvchi-form-field input:focus,
.dvchi-form-field select:focus,
.dvchi-form-field textarea:focus { border-color: var(--dv-cyan); }
.dvchi-form-field textarea { resize: vertical; min-height: 90px; }
.dvchi-form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }

/* ── Review form and list ─────────────────────────────── */
.dvchi-review-wrap {
  background: var(--dv-light); border: 1px solid var(--dv-border);
  border-radius: var(--dv-radius); padding: 28px; margin-top: 32px;
}
.dvchi-review-wrap h3 { font-size: 1.1rem; margin-bottom: 20px; color: var(--dv-dark); }
.dvchi-review-form { display: flex; flex-direction: column; gap: 14px; }
.dvchi-review-form label { font-size: 0.8rem; font-weight: 700; color: var(--dv-muted); text-transform: uppercase; letter-spacing: 0.04em; display: block; margin-bottom: 4px; }
.dvchi-review-form input,
.dvchi-review-form textarea {
  width: 100%; padding: 10px 14px; border: 1.5px solid var(--dv-border);
  border-radius: var(--dv-radius-sm); font-family: var(--dv-font); font-size: 0.92rem; outline: none; transition: border-color var(--dv-transition);
}
.dvchi-review-form input:focus,
.dvchi-review-form textarea:focus { border-color: var(--dv-cyan); }
.dvchi-review-form textarea { resize: vertical; min-height: 100px; }

/* Star rating selector */
.dvchi-star-select { display: flex; flex-direction: row-reverse; gap: 4px; justify-content: flex-end; margin-bottom: 8px; }
.dvchi-star-select input { display: none; }
.dvchi-star-select label { font-size: 32px; color: var(--dv-border); cursor: pointer; transition: color var(--dv-transition); line-height: 1; }
.dvchi-star-select label:hover,
.dvchi-star-select label:hover ~ label,
.dvchi-star-select input:checked ~ label { color: var(--dv-amber); }

/* ── Notice / alerts ──────────────────────────────────── */
.dvchi-notice {
  padding: 12px 16px; border-radius: var(--dv-radius-sm);
  font-size: 0.88rem; margin-bottom: 14px;
  display: flex; align-items: center; gap: 8px;
}
.dvchi-notice.success { background: #E8F8F0; color: #1A7040; border: 1px solid #6ECBA0; }
.dvchi-notice.error   { background: #FEF2F2; color: #991B1B; border: 1px solid #FCA5A5; }
.dvchi-notice.info    { background: var(--dv-cyan-light); color: #0C5C6B; border: 1px solid #67D8E8; }

/* ── Pagination ───────────────────────────────────────── */
.dvchi-pagination { display: flex; justify-content: center; gap: 6px; margin-top: 40px; }
.dvchi-pagination a,
.dvchi-pagination span {
  width: 38px; height: 38px; border: 1.5px solid var(--dv-border);
  border-radius: var(--dv-radius-sm); display: flex; align-items: center;
  justify-content: center; font-size: 0.88rem; font-weight: 500;
  color: var(--dv-body); text-decoration: none; transition: all var(--dv-transition);
}
.dvchi-pagination a:hover { border-color: var(--dv-cyan); color: var(--dv-cyan); background: var(--dv-cyan-light); }
.dvchi-pagination .current { background: var(--dv-cyan); border-color: var(--dv-cyan); color: #fff; }

/* ── Responsive ───────────────────────────────────────── */
@media (max-width: 1024px) {
  .dvchi-grid-4 { grid-template-columns: repeat(2, 1fr); }
  #dvchi-nearby-map-container { grid-template-columns: 1fr !important; }
  .dvchi-map-list { max-height: 300px; }
}
@media (max-width: 768px) {
  .dvchi-grid-3 { grid-template-columns: repeat(2, 1fr); }
  .dvchi-grid-4 { grid-template-columns: 1fr; }
  .dvchi-filters-row { flex-direction: column; align-items: stretch; }
  .dvchi-filter-group select, .dvchi-filter-group input { min-width: 100%; }
  .dvchi-form-row { grid-template-columns: 1fr; }
}
@media (max-width: 520px) {
  .dvchi-grid-2, .dvchi-grid-3 { grid-template-columns: 1fr; }
}

/* DVchi responsive: prevent iOS auto-zoom on input focus (>=16px on phones) */
@media (max-width: 782px) {
  .dvchi-form-field input, .dvchi-form-field select, .dvchi-form-field textarea, .dvchi-filter-group input, .dvchi-filter-group select { font-size: 16px; }
}

/* ══════════════════════════════════════════════════════════
   v1.2.0
   1. Buttons standardised on #07c5fb.
   2. Map centred and given a layer switcher.
   3. Combined discover browser.
   ══════════════════════════════════════════════════════════ */

/* 1. Buttons */
.dvchi-btn-primary,
.dvchi-btn-primary:visited{
    background:var(--dv-btn)!important;border-color:var(--dv-btn)!important;color:#fff!important;}
.dvchi-btn-primary:hover{
    background:var(--dv-btn-dark)!important;border-color:var(--dv-btn-dark)!important;color:#fff!important;
    box-shadow:0 6px 16px rgba(7,197,251,.35)!important;}
.dvchi-unit-btn.active{background:var(--dv-btn)!important;color:#fff!important;border-color:var(--dv-btn)!important;}
.dvchi-btn-full{background:var(--dv-btn);border-color:var(--dv-btn);color:#fff;}
.dvchi-btn-full:hover{background:var(--dv-btn-dark);border-color:var(--dv-btn-dark);}

/* 2. Map: centred, with room for the layer switcher */
#dvchi-nearby-map{
    margin-left:auto;margin-right:auto;max-width:100%;}
.dvchi-map-wrap,
#dvchi-nearby-map-container{margin-left:auto;margin-right:auto;}
.leaflet-control-layers{
    border-radius:10px!important;border:1px solid #e5e7eb!important;
    box-shadow:0 4px 14px rgba(0,0,0,.12)!important;font-size:13px;}
.leaflet-control-layers-list{padding:4px 8px;}
.leaflet-control-layers label{margin:4px 0;display:flex;align-items:center;gap:6px;cursor:pointer;}

/* 3. Combined browser */
.dvchi-discover-all{max-width:100%;}
.dvchi-da-filters{
    display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;
    background:#f9fafb;border:1px solid var(--dv-border);border-radius:12px;
    padding:16px;margin:0 0 16px;}
.dvchi-da-field{display:flex;flex-direction:column;gap:5px;flex:0 1 190px;min-width:0;}
.dvchi-da-field.dvchi-da-search{flex:1 1 260px;}
.dvchi-da-field label{
    font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--dv-muted);}
.dvchi-da-field input,.dvchi-da-field select{
    width:100%;min-height:42px;padding:9px 11px;border:1px solid #d1d5db;border-radius:8px;
    font-size:15px;background:#fff;box-sizing:border-box;}
.dvchi-da-field input:focus,.dvchi-da-field select:focus{
    border-color:var(--dv-btn);outline:none;box-shadow:0 0 0 3px rgba(7,197,251,.18);}
.dvchi-da-clear{min-height:42px;flex:0 0 auto;}

.dvchi-da-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px;}
.dvchi-da-tab{
    display:inline-flex;align-items:center;gap:7px;
    min-height:42px;padding:9px 16px;border:1px solid #d1d5db;border-radius:999px;
    background:#fff;color:var(--dv-body);font-size:14.5px;font-weight:700;cursor:pointer;line-height:1.2;}
.dvchi-da-tab span{
    display:inline-flex;align-items:center;justify-content:center;
    min-width:22px;height:22px;padding:0 6px;border-radius:999px;
    background:#f3f4f6;color:var(--dv-muted);font-size:12px;font-weight:800;}
.dvchi-da-tab:hover{border-color:var(--dv-btn);color:var(--dv-dark);}
.dvchi-da-tab.is-active{background:var(--dv-btn);border-color:var(--dv-btn);color:#fff;}
.dvchi-da-tab.is-active span{background:rgba(255,255,255,.28);color:#fff;}

.dvchi-da-count{font-size:13.5px;color:var(--dv-muted);margin:0 0 14px;}
.dvchi-da-none{padding:26px;text-align:center;color:var(--dv-muted);
    background:#f9fafb;border-radius:12px;}
.dvchi-empty{padding:26px;text-align:center;color:var(--dv-muted);}

@media (max-width:600px){
    .dvchi-da-filters{padding:12px;gap:10px;}
    .dvchi-da-field{flex:1 1 100%;}
    .dvchi-da-clear{width:100%;}
    /* 16px stops iOS zooming the page on focus */
    .dvchi-da-field input,.dvchi-da-field select{font-size:16px;}
    .dvchi-da-tab{flex:1 1 auto;justify-content:center;min-height:44px;}
    .dvchi-da-tabs{gap:6px;}
}

/* ══════════════════════════════════════════════════════════
   v1.2.0 Unified map, search button, add a place
   ══════════════════════════════════════════════════════════ */

/* Search field and its button sit on one row */
.dvchi-da-searchrow{display:flex;gap:8px;align-items:stretch;}
.dvchi-da-searchrow input{flex:1 1 auto;min-width:0;}
.dvchi-da-search-btn{flex:0 0 auto;min-height:42px;padding:9px 20px;font-weight:700;}

/* Map area */
.dvchi-da-maparea{margin:0 0 18px;}
.dvchi-da-maptools{
    display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:0 0 10px;}
.dvchi-da-mapmsg{font-size:13.5px;color:var(--dv-muted);flex:1 1 200px;min-width:0;}
.dvchi-da-mapmsg.is-warn{color:#b45309;font-weight:600;}
#dvchi-da-map{
    width:100%;max-width:100%;margin:0 auto;border-radius:12px;overflow:hidden;
    border:1px solid var(--dv-border);}
#dvchi-da-map.is-placing{cursor:crosshair;box-shadow:0 0 0 3px rgba(7,197,251,.45);}

/* Coloured pins, one colour per listing type */
.dvchi-pin span{
    display:block;width:20px;height:20px;border-radius:50% 50% 50% 0;
    transform:rotate(-45deg);border:2px solid #fff;box-shadow:0 2px 5px rgba(0,0,0,.3);}
.dvchi-pin-pop{display:flex;flex-direction:column;gap:3px;min-width:150px;}
.dvchi-pin-pop strong{font-size:14.5px;}
.dvchi-pin-pop span{font-size:12px;color:var(--dv-muted);}
.dvchi-pin-pop a{font-size:13px;font-weight:700;color:var(--dv-btn);}

/* Add a place dialog */
.dvchi-ap-overlay{
    position:fixed;inset:0;background:rgba(17,17,17,.6);z-index:100090;
    display:flex;align-items:center;justify-content:center;padding:16px;}
.dvchi-ap-box{
    background:#fff;border-radius:14px;padding:24px;width:100%;max-width:480px;
    max-height:88vh;overflow:auto;position:relative;box-sizing:border-box;
    box-shadow:0 14px 44px rgba(0,0,0,.3);}
.dvchi-ap-box h3{margin:0 0 6px;font-size:20px;}
.dvchi-ap-note{margin:0 0 16px;font-size:13.5px;color:var(--dv-muted);line-height:1.5;}
.dvchi-ap-box label{
    display:block;font-weight:700;font-size:13.5px;margin:14px 0 5px;}
.dvchi-ap-opt{font-weight:500;color:var(--dv-muted);font-size:12.5px;}
.dvchi-ap-box input,.dvchi-ap-box select,.dvchi-ap-box textarea{
    width:100%;padding:10px 12px;border:1px solid #d1d5db;border-radius:8px;
    font-size:15px;font-family:inherit;box-sizing:border-box;}
.dvchi-ap-box textarea{resize:vertical;}
.dvchi-ap-coords{
    margin:14px 0 0;font-size:12.5px;color:var(--dv-muted);
    background:#f9fafb;padding:8px 10px;border-radius:7px;}
.dvchi-ap-actions{display:flex;gap:10px;margin-top:18px;flex-wrap:wrap;}
.dvchi-ap-actions .dvchi-btn{flex:1 1 auto;min-height:46px;font-weight:700;}
.dvchi-ap-close{
    position:absolute;top:10px;right:12px;background:none;border:0;
    font-size:26px;line-height:1;color:#9ca3af;cursor:pointer;
    min-width:44px;min-height:44px;border-radius:8px;}
.dvchi-ap-close:hover{color:#111;background:#f3f4f6;}
.dvchi-ap-msg{margin-top:12px;font-size:13.5px;}
.dvchi-ap-msg.is-error{color:#b91c1c;font-weight:600;}

@media (max-width:600px){
    .dvchi-da-searchrow{flex-wrap:wrap;}
    .dvchi-da-searchrow input{flex:1 1 100%;font-size:16px;}
    .dvchi-da-search-btn{flex:1 1 100%;min-height:44px;}
    .dvchi-da-maptools .dvchi-btn{flex:1 1 100%;justify-content:center;min-height:44px;}
    .dvchi-da-mapmsg{flex:1 1 100%;}
    /* 16px stops iOS zooming when a field takes focus */
    .dvchi-ap-box input,.dvchi-ap-box select,.dvchi-ap-box textarea{font-size:16px;}
    .dvchi-ap-actions .dvchi-btn{flex:1 1 100%;}
}

/* Empty state that still offers the way to create the first listing */
.dvchi-da-empty{
    padding:40px 24px;text-align:center;background:#f9fafb;
    border:1px dashed var(--dv-border);border-radius:12px;}
.dvchi-da-empty h3{margin:0 0 8px;font-size:19px;color:var(--dv-dark);}
.dvchi-da-empty p{margin:0 auto;max-width:520px;color:var(--dv-muted);line-height:1.6;font-size:14.5px;}

/* ══════════════════════════════════════════════════════════
   v1.4.0 Restored distance, price, sorting and units
   ══════════════════════════════════════════════════════════ */

/* Map action buttons at full size rather than the small variant */
.dvchi-da-locate,.dvchi-da-addplace{
    min-height:48px!important;padding:12px 22px!important;
    font-size:16px!important;font-weight:700!important;border-radius:8px!important;
    line-height:1.2!important;}
.dvchi-da-locate{background:#fff;border:2px solid #d1d5db;color:var(--dv-body);}
.dvchi-da-locate:hover{border-color:var(--dv-btn);color:var(--dv-dark);}
.dvchi-da-addplace{border:2px solid var(--dv-btn)!important;}

/* Miles and kilometers toggle inside the filter bar */
.dvchi-da-unitfield{flex:0 0 auto;}
.dvchi-da-units{display:inline-flex;border:1px solid #d1d5db;border-radius:8px;overflow:hidden;}
.dvchi-da-unit{
    min-height:42px;padding:9px 16px;border:0;background:#fff;cursor:pointer;
    font-size:14px;font-weight:700;color:var(--dv-body);line-height:1.2;}
.dvchi-da-unit + .dvchi-da-unit{border-left:1px solid #d1d5db;}
.dvchi-da-unit.is-active{background:var(--dv-btn);color:#fff;}

/* A disabled distance filter should look unavailable, not broken */
.dvchi-da-field select:disabled{
    background:#f3f4f6;color:#9ca3af;cursor:not-allowed;}

@media (max-width:600px){
    .dvchi-da-locate,.dvchi-da-addplace{width:100%;justify-content:center;}
    .dvchi-da-unitfield{flex:1 1 100%;}
    .dvchi-da-units{width:100%;}
    .dvchi-da-unit{flex:1 1 50%;min-height:44px;}
}

/* ══════════════════════════════════════════════════════════
   v1.5.0 Search bar, category tabs, richer submission form
   ══════════════════════════════════════════════════════════ */

/* Search on its own full width row above the filters */
.dvchi-da-searchbar{
    display:flex;gap:10px;align-items:stretch;margin:0 0 12px;}
.dvchi-da-searchbar input{
    flex:1 1 auto;min-width:0;min-height:52px;padding:12px 16px;
    border:1px solid #d1d5db;border-radius:10px;font-size:16px;background:#fff;}
.dvchi-da-searchbar input:focus{
    border-color:var(--dv-btn);outline:none;box-shadow:0 0 0 3px rgba(7,197,251,.18);}
.dvchi-da-searchbar .dvchi-da-search-btn{
    flex:0 0 auto;min-height:52px;padding:12px 30px;font-size:16px;font-weight:700;}

/* Categories that exist but are empty stay visible, just muted */
.dvchi-da-tab.is-empty{opacity:.55;}
.dvchi-da-tab.is-empty:hover{opacity:1;}

/* Submission dialog: larger action buttons */
.dvchi-ap-actions .dvchi-btn{
    min-height:50px!important;font-size:16.5px!important;font-weight:700!important;
    padding:13px 22px!important;}

/* Paired fields */
.dvchi-ap-two{display:flex;gap:12px;flex-wrap:wrap;}
.dvchi-ap-two > div{flex:1 1 45%;min-width:0;}

/* Media pickers */
.dvchi-ap-media{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px;}
.dvchi-ap-pick{
    position:relative;overflow:hidden;display:inline-flex;align-items:center;
    justify-content:center;min-height:46px;padding:11px 16px;flex:1 1 auto;
    border:2px dashed #d1d5db;border-radius:9px;background:#fff;cursor:pointer;
    font-size:14px;font-weight:700;color:var(--dv-body);margin:0;}
.dvchi-ap-pick:hover{border-color:var(--dv-btn);color:var(--dv-dark);}
.dvchi-ap-pick input[type="file"]{
    position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%;}
.dvchi-ap-hint{margin:8px 0 0;font-size:12.5px;color:var(--dv-muted);}
.dvchi-ap-preview{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px;}
.dvchi-ap-chip{
    display:inline-flex;align-items:center;gap:6px;max-width:100%;
    padding:6px 10px;background:#f3f4f6;border-radius:999px;
    font-size:12.5px;color:var(--dv-body);word-break:break-all;}
.dvchi-ap-chip button{
    background:none;border:0;cursor:pointer;color:#b91c1c;font-size:16px;
    line-height:1;padding:2px 4px;}

@media (max-width:600px){
    .dvchi-da-searchbar{flex-wrap:wrap;}
    .dvchi-da-searchbar input{flex:1 1 100%;}
    .dvchi-da-searchbar .dvchi-da-search-btn{flex:1 1 100%;}
    .dvchi-ap-two > div{flex:1 1 100%;}
    .dvchi-ap-pick{flex:1 1 100%;min-height:48px;}
}

/* ══════════════════════════════════════════════════════════
   v1.5.1 LAYOUT TIDY

   Previously the page stacked four separate bands of controls
   with different widths, borders and alignments, which read as
   clutter. The order is now search, category, refine, map, and
   each band is visually distinct and internally aligned.
   ══════════════════════════════════════════════════════════ */

.dvchi-discover-all{display:flex;flex-direction:column;gap:16px;}
.dvchi-discover-all > *{margin:0!important;}

/* 1. Search, the most prominent control */
.dvchi-da-searchbar{gap:10px;}
.dvchi-da-searchbar input{min-height:54px;border-radius:10px;}
.dvchi-da-searchbar .dvchi-da-search-btn{min-height:54px;border-radius:10px;}

/* 2. Category tabs, sitting directly under search */
.dvchi-da-tabs{gap:8px;margin:0;}
.dvchi-da-tab{min-height:44px;padding:10px 18px;font-size:14.5px;}

/* 3. Refine panel: an even grid, everything on one baseline */
.dvchi-da-filters{
    display:grid!important;
    grid-template-columns:repeat(auto-fit,minmax(165px,1fr));
    gap:14px 16px;align-items:end;
    background:#f9fafb;border:1px solid var(--dv-border);border-radius:12px;
    padding:18px;margin:0;}
.dvchi-da-filters .dvchi-da-field{flex:none;min-width:0;gap:6px;}
.dvchi-da-filters label{
    font-size:11px;font-weight:800;letter-spacing:.04em;
    text-transform:uppercase;color:var(--dv-muted);white-space:nowrap;}
.dvchi-da-filters select,
.dvchi-da-filters input{min-height:46px;border-radius:9px;}
.dvchi-da-units{width:100%;height:46px;}
.dvchi-da-unit{flex:1 1 50%;min-height:46px;}
.dvchi-da-clearfield .dvchi-da-clear{
    width:100%;min-height:46px;border-radius:9px;
    background:#fff;border:1px solid #d1d5db;color:var(--dv-body);font-weight:700;}
.dvchi-da-clearfield .dvchi-da-clear:hover{border-color:#9ca3af;color:var(--dv-dark);}

/* 4. Map and its tools as one attached block */
.dvchi-da-maparea{
    border:1px solid var(--dv-border);border-radius:12px;overflow:hidden;background:#fff;}
.dvchi-da-maptools{
    display:flex;align-items:center;gap:10px;flex-wrap:wrap;
    padding:12px 14px;margin:0;background:#f9fafb;
    border-bottom:1px solid var(--dv-border);}
.dvchi-da-maptitle{
    font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;
    color:var(--dv-muted);margin-right:2px;}
.dvchi-da-maparea #dvchi-da-map{
    border:0;border-radius:0;margin:0;display:block;}
.dvchi-da-locate,.dvchi-da-addplace{min-height:44px!important;padding:10px 18px!important;font-size:15px!important;}
.dvchi-da-mapmsg{flex:1 1 100%;order:3;margin:0;font-size:13px;}

/* 5. Results */
.dvchi-da-count{margin:0;font-size:13.5px;}
.dvchi-da-grid{margin:0;}

@media (max-width:600px){
    .dvchi-discover-all{gap:12px;}
    .dvchi-da-filters{grid-template-columns:1fr 1fr;padding:14px;gap:12px;}
    .dvchi-da-filters .dvchi-da-search,
    .dvchi-da-filters .dvchi-da-unitfield,
    .dvchi-da-clearfield{grid-column:1 / -1;}
    .dvchi-da-searchbar input,
    .dvchi-da-searchbar .dvchi-da-search-btn{min-height:50px;}
    .dvchi-da-maptools{padding:10px;}
    .dvchi-da-maptitle{flex:1 1 100%;}
    .dvchi-da-locate,.dvchi-da-addplace{flex:1 1 100%;}
}

/* ══════════════════════════════════════════════════════════
   v1.6.0 Star rating picker and reviews
   ══════════════════════════════════════════════════════════ */
.dvchi-stars{display:flex;align-items:center;gap:2px;flex-wrap:wrap;margin:2px 0 4px;}
.dvchi-stars button{
    background:none;border:0;cursor:pointer;padding:4px;line-height:1;
    font-size:30px;filter:grayscale(1);opacity:.35;transition:opacity .12s,filter .12s;}
.dvchi-stars button:hover,.dvchi-stars button.is-on{filter:none;opacity:1;}
.dvchi-stars-label{
    margin-left:10px;font-size:13.5px;font-weight:700;color:var(--dv-muted);}

/* Unselected stars in a displayed score read as empty rather than missing */
.dvchi-star-off{filter:grayscale(1);opacity:.3;}
.dvchi-card-rating .dvchi-stars,
.dvchi-stars-display{font-size:15px;letter-spacing:1px;}

/* Review link inside a map popup */
.dvchi-pin-pop .dvchi-review-trigger{
    margin-top:2px;font-size:13px;font-weight:700;color:var(--dv-btn);text-decoration:none;}
.dvchi-pin-pop .dvchi-review-trigger:hover{text-decoration:underline;}

@media (max-width:600px){
    .dvchi-stars button{font-size:34px;padding:6px 4px;}
    .dvchi-stars-label{flex:1 1 100%;margin-left:0;}
}

/* ══════════════════════════════════════════════════════════
   v1.7.0 Star picker, single media button, video trimmer
   ══════════════════════════════════════════════════════════ */

/* Star picker.
   The previous rule combined grayscale with brightness(1.6), which pushes a
   grey star towards white and made the whole row invisible on the white
   dialog. Unselected stars are now plainly grey, never brightened. */

/* One combined media button */
.dvchi-ap-pick-one{flex:1 1 100%;min-height:52px;font-size:15px;}

/* Video trimmer */
.dvchi-tr-overlay{
    position:fixed;inset:0;background:rgba(17,17,17,.72);z-index:100095;
    display:flex;align-items:center;justify-content:center;padding:16px;}
.dvchi-tr-box{
    background:#fff;border-radius:14px;padding:24px;width:100%;max-width:560px;
    max-height:90vh;overflow:auto;box-sizing:border-box;
    box-shadow:0 14px 44px rgba(0,0,0,.3);}
.dvchi-tr-box h3{margin:0 0 8px;font-size:19px;}
.dvchi-tr-note{margin:0 0 14px;font-size:13.5px;color:var(--dv-muted);line-height:1.55;}
.dvchi-tr-video{width:100%;max-height:280px;background:#000;border-radius:10px;display:block;}
.dvchi-tr-label{display:block;margin:16px 0 6px;font-weight:700;font-size:14px;}
.dvchi-tr-range{width:100%;height:34px;}
.dvchi-tr-keep{margin:6px 0 0;font-size:13px;color:var(--dv-muted);}
.dvchi-tr-progress{margin-top:16px;}
.dvchi-tr-bar{height:10px;background:#e5e7eb;border-radius:999px;overflow:hidden;}
.dvchi-tr-bar span{display:block;height:100%;width:0;background:var(--dv-btn);
    border-radius:999px;transition:width .25s;}
.dvchi-tr-pct{margin:8px 0 0;font-size:13.5px;font-weight:700;color:var(--dv-body);}
.dvchi-tr-actions{display:flex;gap:10px;margin-top:18px;flex-wrap:wrap;}
.dvchi-tr-actions .dvchi-btn{flex:1 1 auto;min-height:48px;font-size:16px;font-weight:700;}

@media (max-width:600px){
    .dvchi-tr-box{padding:18px;}
    .dvchi-tr-actions .dvchi-btn{flex:1 1 100%;}
    .dvchi-stars button{font-size:36px;}
}

/* ══════════════════════════════════════════════════════════
   v1.7.1 DEFINITIVE STAR PICKER
   Stated last so it wins over the earlier version blocks that
   set competing filter and opacity values.
   ══════════════════════════════════════════════════════════ */
.dvchi-stars{display:flex;align-items:center;gap:4px;flex-wrap:wrap;margin:4px 0 6px;}
.dvchi-stars button{
    background:none!important;border:0!important;cursor:pointer;
    padding:2px 4px!important;margin:0!important;line-height:1!important;
    font-size:34px!important;
    filter:grayscale(100%)!important;
    opacity:.45!important;
    transform:none!important;
    transition:opacity .12s,filter .12s,transform .12s;}
.dvchi-stars button:hover{filter:none!important;opacity:.85!important;}
.dvchi-stars button.is-on{
    filter:none!important;opacity:1!important;transform:scale(1.05)!important;}
.dvchi-stars-label{
    margin-left:10px;font-size:14px;font-weight:700;color:var(--dv-muted);}

@media (max-width:600px){
    .dvchi-stars button{font-size:38px!important;padding:4px 5px!important;}
    .dvchi-stars-label{flex:1 1 100%;margin-left:0;margin-top:4px;}
}

/* Trim progress: a way out of a two minute wait */
.dvchi-tr-stop{
    margin-top:14px;width:100%;min-height:46px;font-size:15px;font-weight:700;
    background:#fff;border:1px solid #d1d5db;color:var(--dv-body);border-radius:9px;}
.dvchi-tr-stop:hover{border-color:#9ca3af;color:var(--dv-dark);}
.dvchi-tr-stop:disabled{opacity:.6;cursor:not-allowed;}
.dvchi-tr-pct{line-height:1.5;}

/* ══════════════════════════════════════════════════════════
   v1.8.0 In-browser camera capture
   ══════════════════════════════════════════════════════════ */
.dvchi-ap-media{gap:10px;}
.dvchi-ap-media .dvchi-ap-pick{flex:1 1 46%;min-height:52px;font-size:15px;}
button.dvchi-ap-pick{
    font-family:inherit;color:var(--dv-body);text-align:center;
    background:#fff;border:2px dashed #d1d5db;border-radius:9px;cursor:pointer;}
button.dvchi-ap-pick:hover{border-color:var(--dv-btn);color:var(--dv-dark);}

.dvchi-cam-overlay{
    position:fixed;inset:0;background:rgba(17,17,17,.8);z-index:100100;
    display:flex;align-items:center;justify-content:center;padding:16px;}
.dvchi-cam-box{
    background:#fff;border-radius:14px;padding:20px;width:100%;max-width:600px;
    max-height:92vh;overflow:auto;position:relative;box-sizing:border-box;
    box-shadow:0 14px 44px rgba(0,0,0,.35);}
.dvchi-cam-close{
    position:absolute;top:8px;right:10px;background:none;border:0;
    font-size:28px;line-height:1;color:#9ca3af;cursor:pointer;
    min-width:44px;min-height:44px;border-radius:8px;z-index:2;}
.dvchi-cam-close:hover{color:#111;background:#f3f4f6;}

.dvchi-cam-stage{position:relative;background:#000;border-radius:10px;overflow:hidden;}
.dvchi-cam-video{width:100%;max-height:60vh;display:block;background:#000;}
.dvchi-cam-rec{
    position:absolute;top:10px;left:10px;display:flex;align-items:center;gap:7px;
    background:rgba(17,17,17,.75);color:#fff;padding:6px 12px;border-radius:999px;
    font-size:13px;font-weight:700;}
.dvchi-cam-rec i{
    width:10px;height:10px;border-radius:50%;background:#ef4444;display:block;
    animation:dvchiRecPulse 1s infinite;}
@keyframes dvchiRecPulse{0%,100%{opacity:1}50%{opacity:.25}}

.dvchi-cam-msg{margin:12px 0 0;font-size:13.5px;color:var(--dv-muted);line-height:1.5;}
.dvchi-cam-msg.is-error{color:#b91c1c;font-weight:600;}
.dvchi-cam-controls{display:flex;gap:10px;margin-top:14px;flex-wrap:wrap;}
.dvchi-cam-controls .dvchi-btn{
    flex:1 1 auto;min-height:50px;font-size:15.5px;font-weight:700;border-radius:9px;}
.dvchi-cam-flip,.dvchi-cam-video{background:#fff;border:1px solid #d1d5db;color:var(--dv-body);}
.dvchi-cam-flip:hover,.dvchi-cam-video:hover{border-color:#9ca3af;color:var(--dv-dark);}
.dvchi-cam-controls .dvchi-btn:disabled{opacity:.5;cursor:not-allowed;}

@media (prefers-reduced-motion:reduce){
    .dvchi-cam-rec i{animation:none;}
}
@media (max-width:600px){
    .dvchi-ap-media .dvchi-ap-pick{flex:1 1 100%;}
    .dvchi-cam-box{padding:14px;}
    .dvchi-cam-controls .dvchi-btn{flex:1 1 100%;min-height:52px;}
    .dvchi-cam-video{max-height:52vh;}
}

/* ══════════════════════════════════════════════════════════
   v1.9.0 Collapsible filters, heading arrow, routing
   ══════════════════════════════════════════════════════════ */

/* Collapsible refine panel */
.dvchi-da-refine{
    border:1px solid var(--dv-border);border-radius:12px;background:#fff;overflow:hidden;}
.dvchi-da-refine-head{
    display:flex;align-items:center;gap:10px;cursor:pointer;list-style:none;
    padding:14px 16px;min-height:52px;background:#f9fafb;
    font-weight:700;font-size:15px;color:var(--dv-dark);user-select:none;}
.dvchi-da-refine-head::-webkit-details-marker{display:none;}
.dvchi-da-refine-head:hover{background:#f3f4f6;}
.dvchi-da-refine-title{flex:1 1 auto;}
.dvchi-da-refine-count{
    background:var(--dv-btn);color:#fff;border-radius:999px;
    padding:3px 10px;font-size:12px;font-weight:800;display:none;}
.dvchi-da-refine-caret{color:var(--dv-muted);font-size:12px;transition:transform .18s;}
.dvchi-da-refine[open] .dvchi-da-refine-caret{transform:rotate(180deg);}
.dvchi-da-refine .dvchi-da-filters{
    border:0!important;border-radius:0!important;background:#fff!important;
    border-top:1px solid var(--dv-border)!important;}

/* You are here: a triangle that points where you are heading */
.dvchi-me{position:relative;}
.dvchi-me-arrow{
    position:absolute;top:50%;left:50%;width:0;height:0;
    margin:-13px 0 0 -9px;
    border-left:9px solid transparent;border-right:9px solid transparent;
    border-bottom:22px solid #07c5fb;
    filter:drop-shadow(0 1px 2px rgba(0,0,0,.4));
    transform-origin:50% 65%;transition:transform .2s linear;}
.dvchi-me.is-flat .dvchi-me-arrow{
    border:0;width:16px;height:16px;border-radius:50%;
    background:#07c5fb;margin:-8px 0 0 -8px;box-shadow:0 0 0 3px #fff;}
.dvchi-me-pulse{
    position:absolute;top:50%;left:50%;width:30px;height:30px;margin:-15px 0 0 -15px;
    border-radius:50%;background:rgba(7,197,251,.25);
    animation:dvchiMePulse 2s infinite;}
@keyframes dvchiMePulse{
    0%{transform:scale(.6);opacity:.9}
    100%{transform:scale(1.6);opacity:0}}
@media (prefers-reduced-motion:reduce){.dvchi-me-pulse{animation:none;}}

/* Recentre control */
.leaflet-control a.dvchi-recenter,a.dvchi-recenter{
    display:flex!important;align-items:center;justify-content:center;
    width:34px;height:34px;background:#fff;color:#374151;
    font-size:19px;font-weight:700;text-decoration:none;
    border-radius:4px;box-shadow:0 1px 5px rgba(0,0,0,.4);margin-top:8px;}
a.dvchi-recenter:hover{background:#f3f4f6;color:#07c5fb;}

/* Route panel */
.dvchi-da-route{
    border-bottom:1px solid var(--dv-border);background:#fff;
    max-height:260px;overflow:auto;}
.dvchi-da-route-head{
    display:flex;align-items:center;gap:10px;flex-wrap:wrap;
    padding:12px 14px;background:#f0fbff;border-bottom:1px solid #d6f2fd;}
.dvchi-da-route-to{font-size:15px;flex:1 1 180px;min-width:0;word-break:break-word;}
.dvchi-da-route-sum{font-size:13.5px;color:var(--dv-body);font-weight:700;flex:1 1 100%;}
.dvchi-da-route-modes{display:inline-flex;border:1px solid #d1d5db;border-radius:8px;overflow:hidden;}
.dvchi-da-mode{
    background:#fff;border:0;cursor:pointer;padding:9px 14px;min-height:42px;
    font-size:13.5px;font-weight:700;color:var(--dv-body);}
.dvchi-da-mode + .dvchi-da-mode{border-left:1px solid #d1d5db;}
.dvchi-da-mode.is-active{background:var(--dv-btn);color:#fff;}
.dvchi-da-route-clear{
    background:#fff;border:1px solid #d1d5db;border-radius:8px;cursor:pointer;
    min-height:42px;padding:9px 14px;font-size:13.5px;font-weight:700;color:var(--dv-body);}
.dvchi-da-route-clear:hover{border-color:#9ca3af;color:var(--dv-dark);}
.dvchi-da-route-steps{margin:0;padding:10px 16px 14px 32px;font-size:13.5px;line-height:1.6;}
.dvchi-da-route-steps li{margin-bottom:4px;color:var(--dv-body);}
.dvchi-da-route-steps a{color:var(--dv-btn);font-weight:700;}

.dvchi-pin-pop .dvchi-route-trigger{
    margin-top:2px;font-size:13px;font-weight:700;color:var(--dv-btn);text-decoration:none;}
.dvchi-pin-pop .dvchi-route-trigger:hover{text-decoration:underline;}

@media (max-width:600px){
    .dvchi-da-refine-head{min-height:56px;font-size:15.5px;}
    .dvchi-da-route-modes,.dvchi-da-route-clear{flex:1 1 100%;}
    .dvchi-da-mode{flex:1 1 50%;}
    .dvchi-da-route{max-height:220px;}
}

/* ══════════════════════════════════════════════════════════
   v2.0.0 Start and end trim selection
   ══════════════════════════════════════════════════════════ */
.dvchi-tr-row{display:flex;align-items:center;gap:12px;margin-top:14px;flex-wrap:wrap;}
.dvchi-tr-row label{
    flex:0 0 110px;font-weight:700;font-size:14px;color:var(--dv-body);}
.dvchi-tr-row label strong{color:var(--dv-btn);}
.dvchi-tr-row input[type="range"]{flex:1 1 180px;min-width:0;height:36px;}
.dvchi-tr-keep{
    margin:12px 0 0;font-size:14px;font-weight:700;color:var(--dv-body);
    background:#f0fbff;border:1px solid #d6f2fd;border-radius:8px;padding:10px 12px;}
.dvchi-tr-keep.is-error{background:#fef2f2;border-color:#fecaca;color:#b91c1c;}
.dvchi-tr-actions .dvchi-btn:disabled{opacity:.5;cursor:not-allowed;}
.dvchi-tr-play{background:#fff;border:1px solid #d1d5db;color:var(--dv-body);}
.dvchi-tr-play:hover{border-color:var(--dv-btn);color:var(--dv-dark);}

@media (max-width:600px){
    .dvchi-tr-row label{flex:1 1 100%;}
    .dvchi-tr-row input[type="range"]{flex:1 1 100%;height:40px;}
}

/* ══════════════════════════════════════════════════════════
   v2.1.0 PLACE PROFILE
   A dedicated two column layout, replacing the theme's blog
   article template.
   ══════════════════════════════════════════════════════════ */
.dvchi-place{max-width:1180px;margin:0 auto;padding:0 20px 60px;box-sizing:border-box;}

.dvchi-place-hero{
    width:100%;max-height:380px;overflow:hidden;border-radius:0 0 16px 16px;
    margin-bottom:24px;background:#f3f4f6;}
.dvchi-place-hero img{width:100%;height:100%;max-height:380px;object-fit:cover;display:block;}

.dvchi-place-head{
    display:flex;gap:24px;flex-wrap:wrap;align-items:flex-start;
    padding-bottom:22px;margin-bottom:26px;border-bottom:1px solid var(--dv-border);}
.dvchi-place-headmain{flex:1 1 420px;min-width:0;}
.dvchi-place-type{
    display:inline-block;font-size:11.5px;font-weight:800;letter-spacing:.06em;
    text-transform:uppercase;color:var(--dv-btn);margin-bottom:6px;}
.dvchi-place-title{margin:0 0 10px;font-size:36px;line-height:1.15;word-break:break-word;}
.dvchi-place-rating{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px;}
.dvchi-place-stars{font-size:19px;letter-spacing:1px;}
.dvchi-place-rating strong{font-size:19px;}
.dvchi-place-count{color:var(--dv-muted);font-size:14px;}
.dvchi-place-price{
    background:#f3f4f6;border-radius:6px;padding:3px 9px;font-size:13px;font-weight:700;}
.dvchi-place-meta{margin:0;color:var(--dv-muted);font-size:14.5px;display:flex;gap:14px;flex-wrap:wrap;}

.dvchi-place-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-start;}
.dvchi-place-actions .dvchi-btn{
    min-height:46px;padding:11px 20px;font-size:15px;font-weight:700;border-radius:9px;
    background:#fff;border:1px solid #d1d5db;color:var(--dv-body);
    display:inline-flex;align-items:center;text-decoration:none;cursor:pointer;}
.dvchi-place-actions .dvchi-btn:hover{border-color:var(--dv-btn);color:var(--dv-dark);}
.dvchi-place-actions .dvchi-btn-primary{
    background:var(--dv-btn);border-color:var(--dv-btn);color:#fff;}
.dvchi-place-actions .dvchi-btn-primary:hover{background:var(--dv-btn-dark);color:#fff;}
.dvchi-place-report{color:var(--dv-muted)!important;}
.dvchi-place-report:hover{border-color:#b91c1c!important;color:#b91c1c!important;}

.dvchi-place-body{display:flex;gap:28px;align-items:flex-start;flex-wrap:wrap;}
.dvchi-place-main{flex:1 1 560px;min-width:0;display:flex;flex-direction:column;gap:22px;}
.dvchi-place-side{flex:0 1 330px;min-width:0;display:flex;flex-direction:column;gap:22px;
    position:sticky;top:24px;}

.dvchi-place-card{
    background:#fff;border:1px solid var(--dv-border);border-radius:14px;padding:22px;}
.dvchi-place-card h2{margin:0 0 14px;font-size:19px;font-weight:800;}
.dvchi-place-about{line-height:1.7;}
.dvchi-place-about p:last-child{margin-bottom:0;}

.dvchi-place-gallery{
    display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;}
.dvchi-place-gallery img,.dvchi-place-gallery video{
    width:100%;height:130px;object-fit:cover;border-radius:9px;display:block;background:#000;}

.dvchi-place-mapbox{
    height:230px;border-radius:10px;overflow:hidden;margin-bottom:12px;background:#f3f4f6;}
.dvchi-place-addr{margin:0 0 12px;font-size:14px;color:var(--dv-body);line-height:1.5;}
.dvchi-place-openmaps{
    display:block;text-align:center;min-height:46px;padding:12px;font-weight:700;
    border-radius:9px;background:var(--dv-btn);color:#fff;text-decoration:none;}
.dvchi-place-openmaps:hover{background:var(--dv-btn-dark);color:#fff;}

.dvchi-place-contact{list-style:none;margin:0;padding:0;}
.dvchi-place-contact li{
    display:flex;gap:10px;align-items:flex-start;padding:9px 0;font-size:14.5px;
    border-bottom:1px solid #f3f4f6;word-break:break-word;}
.dvchi-place-contact li:last-child{border-bottom:0;}
.dvchi-place-contact span{flex:0 0 20px;}
.dvchi-place-contact a{color:var(--dv-btn);font-weight:600;}
.dvchi-place-hours{font-size:14.5px;line-height:1.7;}
.dvchi-place-hours p{margin:0 0 6px;}

/* Report dialog */
.dvchi-rep-overlay{
    position:fixed;inset:0;background:rgba(17,17,17,.6);z-index:100110;
    display:flex;align-items:center;justify-content:center;padding:16px;}
.dvchi-rep-box{
    background:#fff;border-radius:14px;padding:24px;width:100%;max-width:460px;
    max-height:88vh;overflow:auto;position:relative;box-sizing:border-box;
    box-shadow:0 14px 44px rgba(0,0,0,.3);}
.dvchi-rep-box h3{margin:0 0 6px;font-size:20px;}
.dvchi-rep-note{margin:0 0 16px;font-size:13.5px;color:var(--dv-muted);}
.dvchi-rep-close{
    position:absolute;top:10px;right:12px;background:none;border:0;font-size:26px;
    line-height:1;color:#9ca3af;cursor:pointer;min-width:44px;min-height:44px;border-radius:8px;}
.dvchi-rep-close:hover{color:#111;background:#f3f4f6;}
.dvchi-rep-opts{display:flex;flex-direction:column;gap:2px;margin-bottom:16px;}
.dvchi-rep-opt{
    display:flex;align-items:center;gap:10px;padding:11px 12px;border-radius:9px;
    cursor:pointer;font-size:14.5px;border:1px solid transparent;}
.dvchi-rep-opt:hover{background:#f9fafb;border-color:var(--dv-border);}
.dvchi-rep-opt input{width:18px;height:18px;flex:0 0 auto;}
.dvchi-rep-label{display:block;font-weight:700;font-size:14px;margin-bottom:6px;}
.dvchi-rep-label span{font-weight:500;color:var(--dv-muted);}
.dvchi-rep-box textarea{
    width:100%;padding:11px 12px;border:1px solid #d1d5db;border-radius:9px;
    font-size:15px;font-family:inherit;box-sizing:border-box;resize:vertical;}
.dvchi-rep-actions{display:flex;gap:10px;margin-top:18px;flex-wrap:wrap;}
.dvchi-rep-actions .dvchi-btn{flex:1 1 auto;min-height:48px;font-weight:700;font-size:15.5px;}
.dvchi-rep-msg{margin-top:12px;font-size:14px;}
.dvchi-rep-msg.is-error{color:#b91c1c;font-weight:600;}

@media (max-width:900px){
    .dvchi-place-side{position:static;flex:1 1 100%;}
    .dvchi-place-main{flex:1 1 100%;}
}
@media (max-width:600px){
    .dvchi-place{padding:0 14px 40px;}
    .dvchi-place-title{font-size:27px;}
    .dvchi-place-hero,.dvchi-place-hero img{max-height:220px;}
    .dvchi-place-actions{width:100%;}
    .dvchi-place-actions .dvchi-btn{flex:1 1 100%;justify-content:center;}
    .dvchi-place-card{padding:16px;}
    .dvchi-rep-box textarea{font-size:16px;}
    .dvchi-rep-actions .dvchi-btn{flex:1 1 100%;}
}

/* Map popup: the place name is the link to its profile (v2.1.1) */
.dvchi-pin-pop .dvchi-pin-name{
    font-size:15px;font-weight:800;color:var(--dv-dark);text-decoration:none;
    line-height:1.3;display:block;}
.dvchi-pin-pop .dvchi-pin-name:hover{color:var(--dv-btn);text-decoration:underline;}
.dvchi-pin-pop .dvchi-pin-name:focus-visible{
    outline:2px solid var(--dv-btn);outline-offset:2px;border-radius:4px;}

/* Draft state indicator in a lightbox (v2.2.0) */
.dvchi-draft-state{
    display:inline-block;margin-left:10px;font-size:12.5px;font-weight:700;
    color:#047857;opacity:0;transition:opacity .2s;}
.dvchi-draft-state.is-on{opacity:1;}
.dvchi-ap-later,.dvchi-rv-later{
    background:#fff;border:1px solid #d1d5db;color:var(--dv-body);font-weight:700;}
.dvchi-ap-later:hover,.dvchi-rv-later:hover{border-color:var(--dv-btn);color:var(--dv-dark);}
.dvchi-rv-overlay .dvchi-ap-box input[type="month"]{
    width:100%;padding:11px 12px;border:1px solid #d1d5db;border-radius:9px;
    font-size:15px;font-family:inherit;box-sizing:border-box;}
@media (max-width:600px){
    .dvchi-rv-overlay .dvchi-ap-box input[type="month"]{font-size:16px;}
}

/* Saved draft pin, distinct from a published listing (v2.4.0) */
.leaflet-marker-icon.dvchi-pin span[style*="f59e0b"]{
    box-shadow:0 0 0 3px rgba(245,158,11,.35),0 2px 5px rgba(0,0,0,.3);}

/* ══════════════════════════════════════════════════════════════
   v2.6.0  Public posting notice

   Appended at the end of the file on purpose. This stylesheet
   carries several dated version blocks and equal specificity rules
   win by document position, so anything inserted higher up would
   silently lose to an older block.
════════════════════════════════════════════════════════════════ */
.dvchi-post-notice{
    display:flex;
    align-items:flex-start;
    gap:8px;
    margin:14px 0 12px;
    padding:11px 13px;
    border:1px solid #ffe08a;
    border-left:4px solid #FFE900;
    border-radius:9px;
    background:#fffbe8;
    color:#3f3a12;
    font-size:14px;
    line-height:1.5;
    overflow-wrap:anywhere;
}
.dvchi-post-notice-ico{flex:0 0 auto;font-size:15px;line-height:1.5;}
.dvchi-post-notice a{
    color:#0b6b7a;
    font-weight:700;
    text-decoration:underline;
    white-space:nowrap;
}
.dvchi-post-notice a:hover{color:#111;}

@media (max-width:600px){
    .dvchi-post-notice{font-size:13.5px;padding:10px 12px;}
    .dvchi-post-notice a{white-space:normal;}
}

/* ══════════════════════════════════════════════════════════════
   v2.9.0  Category colour coding

   Shared by Discover and the homepage. Each tab carries its own
   --cat and --cat-ink from PHP, so the colour of a chip, its pins
   and its legend key are the same value from one source.

   Appended at the end because this stylesheet has older blocks
   styling .dvchi-da-tab, and equal specificity wins by position.
════════════════════════════════════════════════════════════════ */
.dvchi-da-tab{
    --cat:#00C2D4;
    --cat-ink:#04353a;
    display:inline-flex!important;
    align-items:center;
    gap:7px;
    text-decoration:none;
}
.dvchi-da-tabdot{
    width:10px;height:10px;
    flex:0 0 10px;
    border-radius:50% 50% 50% 0;
    transform:rotate(-45deg);
    background:var(--cat);
    display:inline-block;
}
.dvchi-da-tab:hover{border-color:var(--cat)!important;}
.dvchi-da-tab.is-active{
    background:var(--cat)!important;
    border-color:var(--cat)!important;
    color:var(--cat-ink)!important;
}
.dvchi-da-tab.is-active .dvchi-da-tabdot{background:var(--cat-ink);}
.dvchi-da-tab.is-active span{
    background:rgba(255,255,255,.35)!important;
    color:var(--cat-ink)!important;
}
.dvchi-da-tab.is-empty{opacity:.6;}
.dvchi-da-tab.is-empty:hover{opacity:1;}
.dvchi-da-tab-link{border-style:dashed!important;}

/* Teardrop pins replace the old round dot */
.dvchi-pin-cat{background:none!important;border:0!important;}
.dvchi-pin-cat span{display:none;}

/* v2.9.1: With photos only, shared by Discover and the homepage. */
.dvchi-da-checkfield .dvchi-da-check{
    display:inline-flex;
    align-items:center;
    gap:8px;
    min-height:44px;
    font-size:14px;
    font-weight:400;
    text-transform:none;
    letter-spacing:0;
    color:#111;
    cursor:pointer;
    white-space:nowrap;
}
.dvchi-da-checkfield .dvchi-da-check input{
    width:20px;height:20px;flex:0 0 20px;margin:0;cursor:pointer;
}

/* ══════════════════════════════════════════════════════════════
   v3.0.0  Split layout

   The homepage and Discover are one shortcode. Everything above the
   map is identical; this block only arranges, it never restyles, so
   the two pages cannot drift.

   Stack layout is untouched: without .dvchi-da-layout-split none of
   these selectors match.

   The row takes its height from --dv-split-h, set on the root from
   the shortcode's height attribute. Without a definite height the
   map asked its parent how tall to be while the parent was asking
   the map, and the two columns ended up different heights.
════════════════════════════════════════════════════════════════ */
.dvchi-da-layout-split .dvchi-da-body{
    display:flex;
    gap:14px;
    align-items:stretch;
    height:var(--dv-split-h,620px);
    min-height:420px;
}

.dvchi-da-layout-split .dvchi-da-maparea{
    flex:1 1 auto;
    min-width:0;
    height:100%;
    margin-bottom:0;
    display:flex;
    flex-direction:column;
}
.dvchi-da-layout-split .dvchi-da-maptools{flex:0 0 auto;}
.dvchi-da-layout-split #dvchi-da-map{
    flex:1 1 auto;
    height:auto!important;
    min-height:0;
}

.dvchi-da-layout-split .dvchi-da-results{
    flex:0 0 400px;
    max-width:400px;
    min-width:0;
    height:100%;
    display:flex;
    flex-direction:column;
    border:1px solid #e5e7eb;
    border-radius:12px;
    background:#fff;
    overflow:hidden;
}
.dvchi-da-layout-split .dvchi-da-results .dvchi-da-count{
    flex:0 0 auto;
    margin:0;
    padding:12px 14px;
    border-bottom:1px solid #e5e7eb;
    font-weight:800;
}
.dvchi-da-layout-split .dvchi-da-results .dvchi-da-grid,
.dvchi-da-layout-split .dvchi-da-results .dvchi-da-empty{
    flex:1 1 auto;
    min-height:0;
    overflow-y:auto;
    -webkit-overflow-scrolling:touch;
    padding:10px;
    margin:0;
}
/* One column in the rail whatever the columns attribute says, because a
   multi column grid inside 400px is unreadable. */
.dvchi-da-layout-split .dvchi-da-results .dvchi-da-grid{
    display:flex!important;
    flex-direction:column;
    gap:10px;
}
.dvchi-da-layout-split .dvchi-da-results .dvchi-da-item{width:100%;}
.dvchi-da-layout-split .dvchi-da-results .dvchi-da-none{padding:0 14px 14px;}

@media (max-width:1180px){
    .dvchi-da-layout-split .dvchi-da-results{flex:0 0 340px;max-width:340px;}
}

/* Below this two columns cannot both be useful, so it becomes the stack
   layout Discover already uses. */
@media (max-width:1024px){
    .dvchi-da-layout-split .dvchi-da-body{display:block;height:auto;}
    .dvchi-da-layout-split .dvchi-da-maparea{height:auto;display:block;}
    .dvchi-da-layout-split #dvchi-da-map{height:460px!important;flex:none;}
    .dvchi-da-layout-split .dvchi-da-results{
        flex:none;
        max-width:100%;
        height:auto;
        border:0;
        border-radius:0;
        background:none;
        margin-top:14px;
        display:block;
        overflow:visible;
    }
    .dvchi-da-layout-split .dvchi-da-results .dvchi-da-count{border:0;padding:0 0 8px;}
    .dvchi-da-layout-split .dvchi-da-results .dvchi-da-grid{
        display:grid!important;
        grid-template-columns:repeat(2,minmax(0,1fr));
        overflow:visible;
        padding:0;
    }
    .dvchi-da-layout-split .dvchi-da-results .dvchi-da-none{padding:0;}
}

@media (max-width:600px){
    .dvchi-da-layout-split .dvchi-da-results .dvchi-da-grid{
        grid-template-columns:minmax(0,1fr);
    }
    .dvchi-da-layout-split #dvchi-da-map{height:60vh!important;min-height:320px;}
}

/* v3.0.2: custom radius input, revealed by the Custom distance option.
   Sits under the select inside the same field so the filter row keeps its
   column widths whether it is showing or not. */
.dvchi-da-customdist{
    display:flex;
    align-items:center;
    gap:6px;
    margin-top:5px;
}
.dvchi-da-customdist[hidden]{display:none;}
.dvchi-da-field .dvchi-da-customdist input{
    /* 16px on phones so iOS does not zoom the page when it is focused.
       The 15px above matches the other fields on wider screens. */
    flex:1 1 auto;
    min-width:0;
}
.dvchi-da-customunit{
    flex:0 0 auto;
    font-size:13px;
    font-weight:700;
    color:var(--dv-muted);
    min-width:22px;
}
.dvchi-da-field .dvchi-da-customdist input:disabled{
    background:#f3f4f6;color:#9ca3af;cursor:not-allowed;
}
@media (max-width:600px){
    .dvchi-da-field .dvchi-da-customdist input{font-size:16px;min-height:44px;}
}

/* ══════════════════════════════════════════════════════════════
   v3.1.0  Upload progress in the Add a place and review dialogs

   Sits directly above the action buttons, so it is where the eye
   already is after pressing them.
════════════════════════════════════════════════════════════════ */
.dvchi-ap-progress{margin:10px 0 12px;}
.dvchi-ap-progress[hidden]{display:none;}
.dvchi-ap-bar{
    height:8px;
    border-radius:999px;
    background:#e9edf1;
    overflow:hidden;
}
.dvchi-ap-bar span{
    display:block;
    height:100%;
    width:0;
    border-radius:999px;
    background:#07c5fb;
    transition:width .2s ease;
}
.dvchi-ap-progtxt{
    margin:6px 0 0;
    font-size:12.5px;
    line-height:1.5;
    color:#5b6472;
    overflow-wrap:anywhere;
}
@media (prefers-reduced-motion:reduce){
    .dvchi-ap-bar span{transition:none;}
}

/* ══════════════════════════════════════════════════════════════
   v3.2.0  Voice recorder
════════════════════════════════════════════════════════════════ */
.dvchi-voice-ov{
    position:fixed;
    inset:0;
    z-index:100050;
    background:rgba(17,17,17,.72);
    display:flex;
    align-items:center;
    justify-content:center;
    padding:20px;
    padding:max(20px, env(safe-area-inset-top)) max(20px, env(safe-area-inset-right))
            max(20px, env(safe-area-inset-bottom)) max(20px, env(safe-area-inset-left));
}
.dvchi-voice-box{
    width:100%;
    max-width:420px;
    box-sizing:border-box;
    background:#fff;
    border-radius:14px;
    padding:22px;
    text-align:center;
}
.dvchi-voice-box h3{margin:0 0 14px;font-size:18px;}
.dvchi-voice-level{
    height:10px;
    border-radius:999px;
    background:#eef1f4;
    overflow:hidden;
    margin:0 0 10px;
}
.dvchi-voice-level span{
    display:block;
    height:100%;
    width:0;
    border-radius:999px;
    background:#07c5fb;
    transition:width .08s linear;
}
.dvchi-voice-time{
    margin:0 0 8px;
    font-size:26px;
    font-weight:800;
    font-variant-numeric:tabular-nums;
    color:#111;
}
.dvchi-voice-time small{font-size:13px;font-weight:600;color:#6b7280;}
.dvchi-voice-msg{margin:0 0 12px;font-size:13.5px;line-height:1.5;color:#5b6472;min-height:1em;}
.dvchi-voice-msg.is-error{color:#b91c1c;font-weight:600;}
.dvchi-voice-actions,
.dvchi-voice-confirm{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;}
.dvchi-voice-confirm[hidden]{display:none;}
.dvchi-voice-actions .dvchi-btn,
.dvchi-voice-confirm .dvchi-btn{min-height:44px;padding:11px 18px;font-weight:700;}
.dvchi-voice-rec.is-recording{background:#b91c1c!important;color:#fff!important;}
.dvchi-voice-preview{width:100%;margin:12px 0;}
.dvchi-voice-preview[hidden]{display:none;}

/* Audio attached to a post, comment or review */
.dvchi-audio-item{
    display:flex;
    align-items:center;
    gap:8px;
    width:100%;
    max-width:420px;
    padding:8px 10px;
    margin:6px 0;
    border:1px solid #e5e7eb;
    border-radius:10px;
    background:#f8fafc;
    box-sizing:border-box;
}
.dvchi-audio-item audio{flex:1 1 auto;min-width:0;width:100%;}
.dvchi-audio-ico{flex:0 0 auto;font-size:16px;}

@media (max-width:600px){
    .dvchi-voice-box{padding:18px;}
    .dvchi-voice-actions .dvchi-btn,
    .dvchi-voice-confirm .dvchi-btn{flex:1 1 100%;}
    .dvchi-audio-item{max-width:100%;}
}
@media (prefers-reduced-motion:reduce){
    .dvchi-voice-level span{transition:none;}
}

/* ══════════════════════════════════════════════════════════════
   v3.3.0  Cost and tags on Write a review

   Both optional. The currency symbol sits inside the field rather than in
   the label, so the number and the unit read as one value.
════════════════════════════════════════════════════════════════ */
.dvchi-rv-costrow{
    display:flex;
    align-items:stretch;
    border:1px solid #d1d5db;
    border-radius:8px;
    overflow:hidden;
    background:#fff;
}
.dvchi-rv-costrow:focus-within{
    border-color:var(--dv-btn, #07c5fb);
    box-shadow:0 0 0 3px rgba(7,197,251,.16);
}
.dvchi-rv-cur{
    display:flex;
    align-items:center;
    padding:0 12px;
    background:#f9fafb;
    border-right:1px solid #e5e7eb;
    font-size:15px;
    font-weight:800;
    color:var(--dv-muted);
}
.dvchi-ap-box .dvchi-rv-cost{
    border:0!important;
    border-radius:0;
    box-shadow:none!important;
    outline:0!important;
}
/* Chrome and Safari draw spinners that make the field jump on hover. */
.dvchi-rv-cost::-webkit-outer-spin-button,
.dvchi-rv-cost::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}
.dvchi-rv-cost{-moz-appearance:textfield;}

.dvchi-rv-tagrow{display:flex;gap:8px;align-items:stretch;}
.dvchi-ap-box .dvchi-rv-tagrow input{flex:1 1 auto;}
.dvchi-rv-tagadd{
    flex:0 0 auto;
    min-height:44px;
    padding:10px 18px;
    border:1px solid #d1d5db;
    border-radius:8px;
    background:#fff;
    font-size:15.5px;
    font-weight:800;
    color:#374151;
    cursor:pointer;
}
.dvchi-rv-tagadd:hover{border-color:var(--dv-btn, #07c5fb);color:#111;}
.dvchi-rv-tagrow.is-full .dvchi-rv-tagadd{opacity:.5;cursor:default;}

.dvchi-rv-tags{display:flex;flex-wrap:wrap;gap:6px;}
.dvchi-rv-tags:not(:empty){margin-top:8px;}
.dvchi-rv-tag{
    display:inline-flex;
    align-items:center;
    gap:6px;
    padding:6px 10px;
    border:1px solid #cdeefb;
    border-radius:999px;
    background:#f2fbff;
    font-size:13px;
    font-weight:700;
    color:#0b6f8c;
    overflow-wrap:anywhere;
}
.dvchi-rv-tag button{
    border:0;
    background:none;
    padding:0 2px;
    font-size:15px;
    line-height:1;
    color:#0b6f8c;
    cursor:pointer;
}
.dvchi-rv-tag button:hover{color:#b91c1c;}

@media (max-width:600px){
    /* 16px keeps iOS from zooming the page when either field takes focus. */
    .dvchi-ap-box .dvchi-rv-cost,
    .dvchi-ap-box .dvchi-rv-taginput{font-size:16px;}
    .dvchi-rv-tagrow{flex-wrap:wrap;}
    .dvchi-rv-tagadd{flex:1 1 100%;}
}
