.vnc-calendar{
  --vnc-bg:#f3f1eb;
  --vnc-bg-soft:#ebe8df;
  --vnc-ink:#1d211d;
  --vnc-muted:#70736d;
  --vnc-border:rgba(29,33,29,.26);
  width:100%;
  color:var(--vnc-ink);
  font-family:inherit;
}
.vnc-calendar *{box-sizing:border-box}
.vnc-calendar__top{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:32px}
.vnc-calendar__eyebrow{font-size:10px;line-height:1.2;letter-spacing:.14em;text-transform:uppercase;color:var(--vnc-muted);margin-bottom:10px}
.vnc-calendar__title{margin:0;font-family:Georgia,"Times New Roman",serif;font-weight:400;font-size:clamp(34px,4vw,58px);line-height:1;letter-spacing:-.035em}
.vnc-calendar__nav{display:flex;gap:8px;flex:0 0 auto}
.vnc-calendar__nav-btn{width:44px;height:44px;border:1px solid var(--vnc-ink);border-radius:999px;background:transparent;color:var(--vnc-ink);font-size:18px;cursor:pointer;transition:.2s ease}
.vnc-calendar__nav-btn:hover,.vnc-calendar__nav-btn:focus-visible{background:var(--vnc-ink);color:#fff;outline:none}
.vnc-calendar__months{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:34px;border-top:1px solid var(--vnc-border);padding-top:24px}
.vnc-month{min-width:0}
.vnc-month__title{font-family:Georgia,"Times New Roman",serif;font-size:26px;font-weight:400;text-transform:capitalize;margin:0 0 18px}
.vnc-month__weekdays,.vnc-month__days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.vnc-month__weekdays{margin-bottom:6px}
.vnc-month__weekdays span{display:flex;align-items:center;justify-content:center;min-height:30px;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--vnc-muted)}
.vnc-day{appearance:none;border:0;background:transparent;border-radius:999px;aspect-ratio:1/1;min-width:0;display:flex;flex-direction:column;gap:2px;align-items:center;justify-content:center;font:inherit;font-size:13px;line-height:1.05;color:var(--vnc-ink);cursor:pointer;position:relative;transition:.15s ease;padding:3px}
.vnc-day:not(:disabled):hover,.vnc-day:not(:disabled):focus-visible{background:var(--vnc-bg-soft);outline:none}
.vnc-day__number{display:block;line-height:1}
.vnc-day__price{display:block;font-size:8px;line-height:1;letter-spacing:-.01em;color:var(--vnc-muted);white-space:nowrap}
.vnc-day.is-start .vnc-day__price,.vnc-day.is-end .vnc-day__price{color:#fff}
.vnc-day.is-past{color:#b9bbb5;cursor:not-allowed}
.vnc-day.is-blocked{background:#e1ded6;color:#969992;text-decoration:line-through;cursor:not-allowed}
.vnc-day.is-start,.vnc-day.is-end{background:var(--vnc-ink);color:#fff;text-decoration:none}
.vnc-day.is-range{background:var(--vnc-bg-soft);border-radius:10px}
.vnc-day.is-today:not(.is-start):not(.is-end)::after{content:"";position:absolute;bottom:5px;width:4px;height:4px;background:var(--vnc-ink);border-radius:999px}
.vnc-empty{aspect-ratio:1/1}
.vnc-calendar__legend{display:flex;flex-wrap:wrap;gap:18px;margin:24px 0 0;padding-top:18px;border-top:1px solid var(--vnc-border);font-size:11px;color:var(--vnc-muted)}
.vnc-calendar__legend span{display:inline-flex;align-items:center;gap:7px}
.vnc-legend{width:12px;height:12px;border-radius:50%;display:inline-block;border:1px solid var(--vnc-border)}
.vnc-legend--free{background:transparent}.vnc-legend--blocked{background:#e1ded6}.vnc-legend--selected{background:var(--vnc-ink);border-color:var(--vnc-ink)}
.vnc-calendar__selection{display:grid;grid-template-columns:1fr 1fr auto;gap:12px;align-items:stretch;margin-top:28px}
.vnc-date-box{border-top:1px solid var(--vnc-border);border-bottom:1px solid var(--vnc-border);padding:14px 0;min-width:0}
.vnc-date-box span{display:block;font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--vnc-muted);margin-bottom:7px}
.vnc-date-box strong{display:block;font-size:13px;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vnc-calendar__check{align-self:center;min-height:48px;padding:0 22px;border:1px solid var(--vnc-ink);border-radius:999px;background:var(--vnc-ink);color:#fff;font:inherit;font-size:10px;letter-spacing:.11em;text-transform:uppercase;cursor:pointer;transition:.2s ease}
.vnc-calendar__check:hover,.vnc-calendar__check:focus-visible{background:transparent;color:var(--vnc-ink);outline:none}
.vnc-calendar__check:disabled{opacity:.35;cursor:not-allowed;background:var(--vnc-ink);color:#fff}
.vnc-calendar__estimate{margin-top:20px;padding:20px 22px;background:var(--vnc-bg-soft);border-top:1px solid var(--vnc-border);border-bottom:1px solid var(--vnc-border);display:flex;align-items:flex-end;justify-content:space-between;gap:20px}
.vnc-calendar__estimate[hidden]{display:none}
.vnc-calendar__estimate span{display:block;font-size:9px;line-height:1.2;letter-spacing:.12em;text-transform:uppercase;color:var(--vnc-muted);margin-bottom:6px}
.vnc-calendar__estimate strong{display:block;font-family:Georgia,"Times New Roman",serif;font-size:30px;line-height:1;font-weight:400}
.vnc-calendar__estimate small{font-size:10px;line-height:1.45;color:var(--vnc-muted);text-align:right}
.vnc-calendar__status{min-height:0;margin-top:18px;padding:0;font-size:13px;line-height:1.5}
.vnc-calendar__status.is-success,.vnc-calendar__status.is-error,.vnc-calendar__status.is-info{padding:15px 18px;border:1px solid var(--vnc-border);background:var(--vnc-bg-soft)}
.vnc-calendar__status.is-success{border-color:var(--vnc-ink)}
.vnc-calendar__status.is-error{border-style:dashed}
.vnc-calendar__note{margin:14px 0 0;font-size:10px;line-height:1.55;color:var(--vnc-muted)}
@media(max-width:700px){
  .vnc-calendar__top{align-items:flex-start;margin-bottom:24px}
  .vnc-calendar__title{font-size:38px}
  .vnc-calendar__months{grid-template-columns:1fr;gap:0}
  .vnc-month__title{font-size:24px}
  .vnc-month__weekdays,.vnc-month__days{gap:4px}
  .vnc-day{font-size:13px;min-height:48px;aspect-ratio:auto}
  .vnc-day__price{font-size:7.5px}
  .vnc-empty{min-height:40px;aspect-ratio:auto}
  .vnc-calendar__selection{grid-template-columns:1fr 1fr}
  .vnc-calendar__check{grid-column:1/-1;width:100%;margin-top:4px}
  .vnc-calendar__estimate{align-items:flex-start;flex-direction:column;gap:8px}
  .vnc-calendar__estimate small{text-align:left}
}
@media(max-width:420px){
  .vnc-calendar__top{display:grid;grid-template-columns:1fr auto}
  .vnc-calendar__title{font-size:34px}
  .vnc-calendar__selection{grid-template-columns:1fr}
  .vnc-calendar__check{grid-column:auto}
}

/* Vista Nevada v1.2 - Elementor / estados bloqueados */
.vnc-calendar button.vnc-day.is-past:hover,
.vnc-calendar button.vnc-day.is-past:focus,
.vnc-calendar button.vnc-day.is-past:active{
  background-color:#EBE8DF !important;
  color:#b9bbb5 !important;
}

/* Los campos de entrada/salida se envían con Elementor, pero solo pueden
   modificarse después de comprobar las fechas en el calendario. */
#formulario-reserva #form-field-fecha_entrada,
#formulario-reserva #form-field-fecha_salida,
#formulario-reserva #form-field-fecha_entrada.vnc-form-date-locked,
#formulario-reserva #form-field-fecha_salida.vnc-form-date-locked,
#formulario-reserva .flatpickr-mobile.vnc-form-date-locked,
#formulario-reserva .flatpickr-input.vnc-form-date-locked{
  cursor:not-allowed !important;
  pointer-events:none !important;
  opacity:.72;
  -webkit-user-select:none;
  user-select:none;
}

/* v1.2.3: representación estable de fechas en Elementor móvil.
   El input real conserva YYYY-MM-DD y se envía; el usuario ve un espejo DD/MM/YYYY. */
#formulario-reserva .vnc-date-source-hidden{
  position:absolute !important;
  width:1px !important;
  height:1px !important;
  min-width:1px !important;
  min-height:1px !important;
  padding:0 !important;
  margin:0 !important;
  border:0 !important;
  opacity:0 !important;
  pointer-events:none !important;
  overflow:hidden !important;
  clip:rect(0 0 0 0) !important;
  clip-path:inset(50%) !important;
  white-space:nowrap !important;
}

#formulario-reserva .vnc-date-display{
  display:block !important;
  width:100% !important;
  cursor:not-allowed !important;
  pointer-events:none !important;
  opacity:.72;
  -webkit-user-select:none;
  user-select:none;
}


/* v1.4.6: los 4 campos técnicos de Elementor permanecen en el DOM y se
   envían, pero nunca quedan visibles ni pueden abrir el selector nativo.
   NO usamos display:none porque algunas configuraciones de Elementor dejan
   de incluir esos campos en el envío. */
#formulario-reserva .elementor-field-group-fecha_entrada,
#formulario-reserva .elementor-field-group-fecha_salida,
#formulario-reserva .elementor-field-group-numero_noches,
#formulario-reserva .elementor-field-group-precio_estimado{
  position:absolute !important;
  width:1px !important;
  height:1px !important;
  min-width:1px !important;
  min-height:1px !important;
  padding:0 !important;
  margin:0 !important;
  border:0 !important;
  opacity:0 !important;
  overflow:hidden !important;
  pointer-events:none !important;
  clip:rect(0 0 0 0) !important;
  clip-path:inset(50%) !important;
  white-space:nowrap !important;
}
