:root{
  --ndm-bg: #ffffff;
  --ndm-card: #ffffff;
  --ndm-border: rgba(15, 23, 42, .10);
  --ndm-text: #0f172a;
  --ndm-muted: #64748b;
  --ndm-accent: #0ea5e9;
  --ndm-accent-2: #0369a1;
  --ndm-danger: #ef4444;
  --ndm-radius: 18px;
  --ndm-shadow: 0 12px 34px rgba(2, 6, 23, .10);
  --ndm-font: system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, "Apple Color Emoji","Segoe UI Emoji";
}

.ndm-reservas-wrap{
  font-family: var(--ndm-font);
  color: var(--ndm-text);
  width: 100%;
  display: flex;
  justify-content: center;
  margin: 22px 0;
}

.ndm-reservas-card{
  width: min(860px, 100%);
  background: var(--ndm-card);
  border: 1px solid var(--ndm-border);
  border-radius: var(--ndm-radius);
  box-shadow: var(--ndm-shadow);
  padding: 22px;
}

.ndm-reservas-head{ margin-bottom: 14px; }
.ndm-reservas-title{
  font-size: 24px;
  margin: 0 0 6px 0;
  letter-spacing: -0.02em;
}
.ndm-reservas-subtitle{
  margin: 0;
  color: var(--ndm-muted);
}

.ndm-grid{
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
}

.ndm-grid-2{
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin-top: 14px;
}

@media (max-width: 860px){
  .ndm-grid{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 520px){
  .ndm-reservas-card{ padding: 16px; }
  .ndm-grid, .ndm-grid-2{ grid-template-columns: 1fr; }
}

.ndm-field label{
  display: block;
  font-size: 13px;
  color: var(--ndm-muted);
  margin: 0 0 6px 2px;
}

.ndm-field input,
.ndm-field select,
.ndm-field textarea{
  width: 100%;
  border: 1px solid var(--ndm-border);
  border-radius: 14px;
  background: #fff;
  color: var(--ndm-text);
  padding: 12px 12px;
  font-size: 15px;
  outline: none;
  transition: border-color .15s ease, box-shadow .15s ease;
}

.ndm-field textarea{ resize: vertical; min-height: 90px; }

.ndm-field input:focus,
.ndm-field select:focus,
.ndm-field textarea:focus{
  border-color: rgba(14, 165, 233, .6);
  box-shadow: 0 0 0 4px rgba(14, 165, 233, .15);
}

.ndm-hint{
  display: block;
  margin: 6px 0 0 2px;
  font-size: 12px;
  color: var(--ndm-muted);
}

.ndm-gdpr{
  display: flex;
  gap: 10px;
  align-items: flex-start;
  margin-top: 14px;
  padding: 12px 12px;
  border: 1px dashed rgba(15, 23, 42, .18);
  border-radius: 14px;
  color: var(--ndm-muted);
  font-size: 13px;
}
.ndm-gdpr input{ margin-top: 2px; }

.ndm-actions{
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  align-items: center;
  margin-top: 16px;
}

.ndm-btn{
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  border: 0;
  border-radius: 999px;
  padding: 12px 18px;
  font-weight: 700;
  cursor: pointer;
  color: #fff;
  background: linear-gradient(135deg, var(--ndm-accent), var(--ndm-accent-2));
  box-shadow: 0 10px 24px rgba(3, 105, 161, .25);
  transition: transform .12s ease, box-shadow .12s ease, opacity .12s ease;
}
.ndm-btn:hover{ transform: translateY(-1px); }
.ndm-btn:active{ transform: translateY(0); }
.ndm-btn:disabled{ opacity: .55; cursor: not-allowed; transform: none; }

.ndm-btn-spinner{
  width: 16px;
  height: 16px;
  border-radius: 999px;
  border: 2px solid rgba(255,255,255,.55);
  border-top-color: #fff;
  display: none;
  animation: ndmspin .9s linear infinite;
}
.ndm-reservas-form.is-loading .ndm-btn-spinner{ display: inline-block; }
.ndm-reservas-form.is-loading .ndm-btn-text{ opacity: .9; }

@keyframes ndmspin{ to{ transform: rotate(360deg); } }

.ndm-msg{
  flex: 1;
  min-width: 220px;
  padding: 10px 12px;
  border-radius: 14px;
  font-size: 14px;
  color: var(--ndm-muted);
  border: 1px solid transparent;
}

.ndm-msg.is-ok{
  color: #065f46;
  background: rgba(16, 185, 129, .10);
  border-color: rgba(16, 185, 129, .25);
}

.ndm-msg.is-err{
  color: #7f1d1d;
  background: rgba(239, 68, 68, .08);
  border-color: rgba(239, 68, 68, .25);
}

.ndm-errs{
  margin: 0;
  padding-left: 18px;
}

.ndm-reservas-foot{
  margin-top: 16px;
  color: var(--ndm-muted);
  text-align: center;
}
