:root{
  --nv-teal:#146B5C;
  --nv-teal-deep:#0E4E44;
  --nv-gold:#E8A33D;
  --nv-pomegranate:#C23B3B;
  --nv-sand:#F2E8D8;
  --nv-ink:#24211D;
  --nv-sky:#E9F1F0;
  --nv-line: rgba(36,33,29,0.12);
}

.nv-btn{
  font-family:'Inter',sans-serif;
  font-weight:600;
  font-size:14px;
  padding:10px 20px;
  border-radius:999px;
  border:1px solid transparent;
  cursor:pointer;
  display:inline-block;
  text-decoration:none;
  transition:opacity .15s ease;
}
.nv-btn-primary{ background:var(--nv-teal); color:var(--nv-sand); }
.nv-btn-primary:hover{ opacity:.9; }
.nv-btn-ghost{ background:transparent; color:var(--nv-teal); border-color:var(--nv-teal); }

.nv-notice, .nv-empty{
  background:var(--nv-sky);
  border:1px solid var(--nv-line);
  border-radius:8px;
  padding:14px 18px;
  font-family:'Inter',sans-serif;
  color:var(--nv-ink);
}

/* ---- Forms ---- */
.nv-form{ font-family:'Inter',sans-serif; color:var(--nv-ink); max-width:640px; }
.nv-form .nv-field{ margin-bottom:16px; }
.nv-form label{ display:block; font-weight:600; font-size:13px; margin-bottom:6px; }
.nv-form input[type=text],
.nv-form input[type=number],
.nv-form input[type=date],
.nv-form input[type=file],
.nv-form select,
.nv-form textarea{
  width:100%;
  padding:10px 12px;
  border:1px solid var(--nv-line);
  border-radius:6px;
  font-family:inherit;
  font-size:14px;
  background:#fff;
}
.nv-form fieldset{ border:none; padding:0; margin-bottom:16px; }
.nv-form legend{ font-weight:600; font-size:13px; margin-bottom:8px; }
.nv-hint{ font-weight:400; text-transform:none; letter-spacing:0; opacity:.55; font-size:12px; }
.nv-check{ display:inline-flex; align-items:center; gap:6px; font-weight:400; margin:0 12px 8px 0; }

/* Multi-select pill buttons (checkbox-driven, no JS needed) */
.nv-pill-group{ display:flex; flex-wrap:wrap; gap:8px; }
.nv-pill-group input[type=checkbox]{
  position:absolute; opacity:0; width:1px; height:1px; overflow:hidden;
}
.nv-pill-group label{
  display:inline-block; margin:0; font-weight:500; font-size:13px;
  padding:8px 16px; border-radius:999px; border:1px solid var(--nv-line);
  background:#fff; color:var(--nv-ink); cursor:pointer; user-select:none;
  transition:background .12s ease, color .12s ease, border-color .12s ease;
}
.nv-pill-group input[type=checkbox]:checked + label{
  background:var(--nv-teal); border-color:var(--nv-teal); color:var(--nv-sand);
}
.nv-pill-group input[type=checkbox]:focus-visible + label{
  outline:2px solid var(--nv-gold); outline-offset:2px;
}

/* Multi-select list (e.g. City) — rows instead of pills */
.nv-list-select{
  border:1px solid var(--nv-line); border-radius:8px; max-height:220px;
  overflow-y:auto; background:#fff;
}
.nv-list-row{
  display:flex; align-items:center; gap:10px; padding:10px 14px;
  border-bottom:1px solid var(--nv-line); margin:0; font-weight:400; cursor:pointer;
}
.nv-list-row:last-child{ border-bottom:none; }
.nv-list-row:hover{ background:var(--nv-sky); }
.nv-list-row input[type=checkbox]{ width:16px; height:16px; flex:none; }

/* ---- Explore layout ---- */
.nv-explore{ display:flex; gap:28px; font-family:'Inter',sans-serif; color:var(--nv-ink); align-items:flex-start; }
.nv-filters{ width:260px; flex:none; background:var(--nv-sky); border-radius:10px; padding:20px; position:sticky; top:20px; }
.nv-filters h3{ font-family:'Fraunces',serif; font-weight:700; margin-bottom:14px; }
.nv-filter-group{ margin-bottom:18px; }
.nv-filter-group label{ display:block; font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.5px; margin-bottom:8px; color:var(--nv-teal); }
.nv-filter-group select, .nv-price-range input{
  width:100%; padding:8px 10px; border:1px solid var(--nv-line); border-radius:6px; background:#fff;
}
.nv-price-range{ display:flex; align-items:center; gap:8px; }
.nv-chip-list{ display:flex; flex-wrap:wrap; gap:8px; }
.nv-chip{
  border:1px solid var(--nv-line); background:#fff; border-radius:999px;
  padding:6px 12px; font-size:12px; cursor:pointer;
}
.nv-chip.is-active{ background:var(--nv-teal); color:var(--nv-sand); border-color:var(--nv-teal); }
#nv-apply-filters{ width:100%; margin-bottom:8px; }
#nv-reset-filters{ width:100%; }

.nv-results{ flex:1; min-width:0; }
.nv-card-grid{ display:grid; grid-template-columns:repeat(auto-fill, minmax(220px, 1fr)); gap:20px; }
.nv-card{
  display:block; text-decoration:none; color:inherit;
  border:1px solid var(--nv-line); border-radius:10px; overflow:hidden; background:#fff;
  transition:transform .15s ease, box-shadow .15s ease;
}
.nv-card:hover{ transform:translateY(-2px); box-shadow:0 6px 18px rgba(0,0,0,0.08); }
.nv-card-photo{ height:160px; background-size:cover; background-position:center; position:relative; background-color:var(--nv-sky); }
.nv-badge{ position:absolute; top:10px; left:10px; font-size:10px; font-weight:700; text-transform:uppercase; padding:4px 8px; border-radius:999px; }
.nv-badge-verified{ background:var(--nv-gold); color:var(--nv-ink); }
.nv-card-body{ padding:14px; }
.nv-card-body h4{ font-family:'Fraunces',serif; margin-bottom:2px; }
.nv-card-city{ font-size:12px; opacity:.65; margin-bottom:4px; }
.nv-card-traits{ font-size:12px; opacity:.8; margin-bottom:8px; }
.nv-card-price{ font-weight:700; color:var(--nv-teal); }

.nv-filter-toggle{ display:none; }

@media(max-width:820px){
  .nv-explore{ flex-direction:column; }
  .nv-filter-toggle{
    display:block; width:100%; padding:12px; border-radius:8px; border:1px solid var(--nv-teal);
    background:#fff; color:var(--nv-teal); font-weight:600;
  }
  .nv-filters{
    position:fixed; left:0; right:0; bottom:0; top:auto; width:auto;
    max-height:80vh; overflow-y:auto; border-radius:16px 16px 0 0;
    transform:translateY(100%); transition:transform .25s ease; z-index:1000;
    box-shadow:0 -8px 30px rgba(0,0,0,.2);
  }
  .nv-filters.is-open{ transform:translateY(0); }
}

/* ---- Dashboard / bookings ---- */
.nv-dashboard{ font-family:'Inter',sans-serif; color:var(--nv-ink); }
.nv-dashboard h3{ font-family:'Fraunces',serif; margin-bottom:14px; }
.nv-booking-row{
  display:flex; justify-content:space-between; align-items:center;
  border:1px solid var(--nv-line); border-radius:8px; padding:14px 16px; margin-bottom:10px; background:#fff;
}
.nv-booking-info{ display:flex; flex-direction:column; gap:4px; }
.nv-booking-dates{ font-size:12px; opacity:.7; }
.nv-status{ font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.5px; width:fit-content; padding:2px 8px; border-radius:999px; }
.nv-status-pending{ background:var(--nv-sand); color:var(--nv-ink); }
.nv-status-accepted{ background:var(--nv-teal); color:var(--nv-sand); }
.nv-status-declined{ background:var(--nv-pomegranate); color:#fff; }
.nv-status-completed{ background:var(--nv-gold); color:var(--nv-ink); }
.nv-booking-actions{ display:flex; gap:8px; }

/* ---- Messaging ---- */
.nv-thread{ font-family:'Inter',sans-serif; max-width:520px; }
.nv-thread-messages{ max-height:420px; overflow-y:auto; border:1px solid var(--nv-line); border-radius:8px; padding:14px; margin-bottom:12px; background:#fff; }
.nv-msg{ margin-bottom:12px; max-width:80%; }
.nv-msg p{ padding:8px 12px; border-radius:12px; font-size:14px; line-height:1.4; }
.nv-msg-mine{ margin-left:auto; text-align:right; }
.nv-msg-mine p{ background:var(--nv-teal); color:var(--nv-sand); }
.nv-msg-theirs p{ background:var(--nv-sky); }
.nv-msg-author{ font-size:11px; font-weight:700; opacity:.6; }
.nv-msg time{ font-size:10px; opacity:.45; }
.nv-thread-form{ display:flex; gap:8px; }
.nv-thread-form textarea{ flex:1; padding:10px; border-radius:8px; border:1px solid var(--nv-line); }

/* ---- Elementor Companion Grid ---- */
.nv-elementor-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));}
.nv-elementor-grid--cols-2{grid-template-columns:repeat(2,minmax(0,1fr));}
.nv-elementor-grid--cols-3{grid-template-columns:repeat(3,minmax(0,1fr));}
.nv-elementor-grid--cols-4{grid-template-columns:repeat(4,minmax(0,1fr));}
.nv-elementor-grid--cols-5{grid-template-columns:repeat(5,minmax(0,1fr));}
.nv-elementor-card{overflow:hidden;background:#fff;border:1px solid var(--nv-line);border-radius:16px;transition:transform .2s ease,box-shadow .2s ease;}
.nv-elementor-card:hover{transform:translateY(-4px);box-shadow:0 12px 30px rgba(36,33,29,.10);}
.nv-elementor-card__media{display:block;position:relative;overflow:hidden;text-decoration:none;}
.nv-elementor-card__image{height:260px;background-size:cover;background-position:center;transition:transform .35s ease;background-color:var(--nv-sky);}
.nv-elementor-card:hover .nv-elementor-card__image{transform:scale(1.03);}
.nv-elementor-card__badge{position:absolute;top:14px;left:14px;padding:6px 10px;border-radius:999px;background:var(--nv-gold);color:var(--nv-ink);font-size:11px;font-weight:700;line-height:1;}
.nv-elementor-card__body{padding:18px;}
.nv-elementor-card__name{display:block;font-family:'Fraunces',serif;font-size:22px;line-height:1.15;font-weight:700;color:var(--nv-ink);text-decoration:none;margin-bottom:6px;}
.nv-elementor-card__city{font-size:13px;opacity:.65;margin-bottom:8px;}
.nv-elementor-card__traits{font-size:12px;opacity:.78;min-height:18px;margin-bottom:14px;}
.nv-elementor-card__price{font-size:17px;font-weight:800;color:var(--nv-teal);}
.nv-elementor-card__price span{font-size:12px;font-weight:500;opacity:.7;margin-left:3px;}
.nv-elementor-card__button{display:flex;justify-content:space-between;align-items:center;margin-top:16px;padding-top:13px;border-top:1px solid var(--nv-line);font-size:13px;font-weight:700;color:var(--nv-teal);text-decoration:none;}
@media(max-width:1024px){.nv-elementor-grid--cols-5,.nv-elementor-grid--cols-4{grid-template-columns:repeat(3,minmax(0,1fr));}}
@media(max-width:767px){.nv-elementor-grid--cols-5,.nv-elementor-grid--cols-4,.nv-elementor-grid--cols-3{grid-template-columns:repeat(2,minmax(0,1fr));}.nv-elementor-card__image{height:220px;}.nv-elementor-card__body{padding:14px;}.nv-elementor-card__name{font-size:19px;}}
@media(max-width:480px){.nv-elementor-grid--cols-5,.nv-elementor-grid--cols-4,.nv-elementor-grid--cols-3,.nv-elementor-grid--cols-2{grid-template-columns:1fr;}}

/* Companion profile Elementor widgets */
.nv-profile-header{display:flex;align-items:center;gap:20px}.nv-profile-avatar{width:96px;height:96px;object-fit:cover;border-radius:50%}.nv-profile-name{margin:0}.nv-profile-meta{margin-top:5px;opacity:.7}.nv-profile-title{margin:0 0 12px}.nv-profile-list{display:flex;flex-wrap:wrap;gap:12px}.nv-profile-item{display:inline-flex;align-items:center;padding:8px 12px;border-radius:999px;background:#f4f1eb}.nv-profile-list--list{display:block}.nv-profile-list--list .nv-profile-item{display:block;border-radius:0;background:transparent;padding:5px 0}.nv-profile-price{display:flex;align-items:baseline;gap:7px}.nv-profile-price strong{font-size:30px;line-height:1}.nv-profile-price__label{opacity:.65}.nv-profile-gallery{display:grid;gap:12px}.nv-profile-gallery--2{grid-template-columns:repeat(2,minmax(0,1fr))}.nv-profile-gallery--3{grid-template-columns:repeat(3,minmax(0,1fr))}.nv-profile-gallery--4{grid-template-columns:repeat(4,minmax(0,1fr))}.nv-profile-gallery__item{display:block;aspect-ratio:1/1;overflow:hidden;border-radius:12px}.nv-profile-gallery__item img{width:100%;height:100%;object-fit:cover;display:block}.nv-availability{border:1px solid #e6e1d8;border-radius:16px;padding:16px}.nv-cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.nv-cal-head button{border:0;background:none;font-size:26px;cursor:pointer;padding:4px 10px}.nv-cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.nv-cal-weekdays span,.nv-cal-day{min-height:38px;display:flex;align-items:center;justify-content:center}.nv-cal-weekdays span{font-size:12px;opacity:.55}.nv-cal-day{border-radius:8px;font-size:13px}.nv-cal-day.is-empty{visibility:hidden}.nv-cal-day.is-unavailable{background:#ece9e3;opacity:.55;text-decoration:line-through}.nv-cal-day.is-today{outline:2px solid currentColor}.nv-cal-legend{display:flex;gap:16px;margin-top:14px;font-size:12px;opacity:.7}.nv-cal-legend i{display:inline-block;width:9px;height:9px;border-radius:50%;background:#d8d4cc;margin-right:5px}.nv-cal-legend i.is-available{background:transparent;border:1px solid #aaa}.nv-booking-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}.nv-elementor-booking label{display:block;font-size:14px}.nv-elementor-booking input,.nv-elementor-booking textarea{width:100%;margin-top:6px}.nv-elementor-booking textarea{resize:vertical}.nv-elementor-booking .nv-btn{margin-top:14px}
@media(max-width:767px){.nv-profile-gallery--4,.nv-profile-gallery--3{grid-template-columns:repeat(2,minmax(0,1fr))}.nv-booking-fields{grid-template-columns:1fr}.nv-profile-header{align-items:flex-start}}
