/* Neon pickers for the public inquiry form: 24-hour time (.tp) and calendar (.dp). The form layout itself is the original one (home.css).
   Popovers are attached to <body> with position:fixed so no panel can clip them. */
.tp, .dp { position: relative; }
.tp__btn, .dp__btn { display: flex; align-items: center; justify-content: space-between; gap: 8px; text-align: left; cursor: pointer; font-variant-numeric: tabular-nums; width: 100%; }
.tp__btn svg, .dp__btn svg { width: 17px; height: 17px; flex-shrink: 0; color: #ff4a58; }
.tp__btn.is-empty .tp__text, .dp__btn.is-empty .dp__text { opacity: 0.55; }
.tp__text, .dp__text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.tp__pop, .dp__pop { position: fixed; z-index: 3000; box-sizing: border-box; padding: 10px; border-radius: 14px; background: rgba(10, 4, 6, 0.98); border: 1px solid rgba(255, 60, 75, 0.75); box-shadow: 0 0 16px rgba(255, 20, 40, 0.3), 0 16px 34px rgba(0, 0, 0, 0.65); color-scheme: dark; font-family: "Inter", "Segoe UI", Arial, sans-serif; }
.tp__pop[hidden], .dp__pop[hidden] { display: none; }

/* time */
.tp__label { margin: 0 0 5px; font-weight: 700; font-size: 0.6rem; letter-spacing: 0.08em; text-transform: uppercase; color: rgba(232, 232, 232, 0.65); }
.tp__grid { display: grid; gap: 4px; margin-bottom: 8px; }
.tp__grid--h { grid-template-columns: repeat(6, minmax(0, 1fr)); }
.tp__grid--m { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.tp__opt { min-height: 32px; border: 1px solid transparent; border-radius: 8px; background: rgba(255, 255, 255, 0.05); color: #f3eaec; font-weight: 600; font-size: 0.86rem; font-variant-numeric: tabular-nums; cursor: pointer; }
.tp__opt:hover { background: rgba(255, 60, 75, 0.22); border-color: rgba(255, 90, 104, 0.5); }
.tp__opt:focus-visible { outline: 2px solid #ff6b76; outline-offset: -2px; }
.tp__opt.is-selected { background: #e21828; color: #fff; box-shadow: 0 0 10px rgba(255, 40, 55, 0.6); }
.tp__foot, .dp__foot { display: flex; gap: 8px; }
.tp__foot button, .dp__foot button { flex: 1; min-height: 32px; border-radius: 8px; border: 1px solid rgba(255, 255, 255, 0.2); background: transparent; color: #f3eaec; font-weight: 600; font-size: 0.78rem; cursor: pointer; }
.tp__foot button:last-child { background: #e21828; border-color: #e21828; color: #fff; }
.tp__foot button:focus-visible, .dp__foot button:focus-visible { outline: 2px solid #ff6b76; outline-offset: 2px; }

/* calendar */
.dp__head { display: flex; align-items: center; justify-content: space-between; gap: 6px; margin-bottom: 8px; }
.dp__title { margin: 0; font-weight: 700; font-size: 0.86rem; letter-spacing: 0.02em; color: #fff; text-align: center; flex: 1; }
.dp__nav { width: 30px; height: 30px; border-radius: 8px; border: 1px solid rgba(255, 90, 104, 0.45); background: rgba(255, 255, 255, 0.04); color: #ff6b76; font-size: 1.1rem; line-height: 1; cursor: pointer; }
.dp__nav:hover:not(:disabled) { background: rgba(255, 60, 75, 0.2); }
.dp__nav:disabled { opacity: 0.3; cursor: default; }
.dp__nav:focus-visible, .dp__day:focus-visible { outline: 2px solid #ff6b76; outline-offset: -2px; }
.dp__week, .dp__grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 3px; }
.dp__week span { text-align: center; font-weight: 700; font-size: 0.6rem; letter-spacing: 0.06em; text-transform: uppercase; color: rgba(232, 232, 232, 0.55); padding: 3px 0 5px; }
.dp__week span.is-we { color: rgba(255, 110, 122, 0.85); }
.dp__grid { margin-bottom: 8px; }
.dp__day { height: 32px; border: 1px solid transparent; border-radius: 8px; background: transparent; color: #f3eaec; font-size: 0.82rem; font-weight: 600; font-variant-numeric: tabular-nums; cursor: pointer; }
.dp__day.is-we { color: #ffa0a8; }
.dp__day.is-out { opacity: 0.32; }
.dp__day:hover:not(:disabled) { background: rgba(255, 60, 75, 0.2); border-color: rgba(255, 90, 104, 0.5); }
.dp__day.is-today { border-color: rgba(255, 90, 104, 0.85); }
.dp__day.is-selected { background: #e21828; color: #fff; box-shadow: 0 0 10px rgba(255, 40, 55, 0.65); }
.dp__day:disabled { opacity: 0.2; cursor: default; }
@media (prefers-reduced-motion: no-preference) { .tp__pop, .dp__pop { animation: pk-in 0.14s ease-out; } }
@keyframes pk-in { from { opacity: 0; transform: translateY(-3px); } to { opacity: 1; transform: none; } }

.pk-backdrop { position: fixed; inset: 0; z-index: 2999; background: rgba(0, 0, 0, 0.45); }
.pk-backdrop[hidden] { display: none; }

/* phones: the original single-column form, but compact (two short fields per row, smaller controls, tight spacing) */
@media (max-width: 760px) {
  .inquiry-form { grid-template-columns: 1fr 1fr; gap: 8px 8px; padding: 12px 12px 14px; }
  .inquiry-form__field { grid-column: 1 / -1; }
  .inquiry-form__field--date, .inquiry-form__field--guests { grid-column: span 1; }
  .inquiry-form__action { grid-column: 1 / -1; grid-template-columns: 1fr; gap: 8px; }
  .inquiry-form__control { height: 42px; font-size: 0.95rem; padding-top: 0; padding-bottom: 0; }
  .inquiry-form__control--area { height: auto; min-height: 60px; padding-top: 8px; padding-bottom: 8px; }
  .inquiry-form__label { font-size: 0.6rem; }
  .inquiry-form__submit { height: 44px; }
}

/* Validation: the card grows with its content (never a fixed height that clips fields or the submit button) and each error sits under its field. */
.page-home .inquiry-panel { height: auto; min-height: var(--home-events-panel-height, 0); overflow: visible; }
.page-home .inquiry-panel__inner { height: auto; min-height: 0; }
.page-home .inquiry-panel__promo { overflow: hidden; border-radius: 16px 0 0 16px; }
@media (max-width: 1100px) { .page-home .inquiry-panel__inner { min-height: 240px; height: auto; } }
@media (max-width: 760px) { .page-home .inquiry-panel__promo { border-radius: 14px 14px 0 0; } }
.inquiry-form__err { margin: 0; font-size: 0.7rem; line-height: 1.3; font-weight: 600; color: #ff9aa2; }
.inquiry-form__err[hidden], .inquiry-form__flash[hidden] { display: none; }
.inquiry-form__flash--error { font-weight: 600; }
.inquiry-form__field.is-invalid .inquiry-form__control { border-color: rgba(255, 90, 100, 0.85); box-shadow: 0 0 0 1px rgba(255, 70, 80, 0.35); }
.inquiry-form__submit[disabled] { opacity: 0.7; cursor: progress; }
.page-home .inquiry-form { align-items: start; }
.page-home .inquiry-form__action { align-items: end; }


/* Invalid field: saturated red neon pulse (3 beats, box-shadow only, so nothing moves), then a clear static red state. */
.inquiry-form__field.is-invalid .inquiry-form__control { border-color: #ff3b4a; box-shadow: 0 0 0 1px rgba(255, 59, 74, 0.55), 0 0 8px rgba(255, 40, 55, 0.35); background-image: none; }
.inquiry-form__field.is-invalid.is-pulse .inquiry-form__control { animation: inq-neon-pulse 0.72s ease-out 3; }
@keyframes inq-neon-pulse {
  0%   { box-shadow: 0 0 0 1px rgba(255, 59, 74, 0.55), 0 0 0 rgba(255, 30, 50, 0); }
  35%  { box-shadow: 0 0 0 2px #ff2a3d, 0 0 22px 4px rgba(255, 30, 50, 0.85); }
  100% { box-shadow: 0 0 0 1px rgba(255, 59, 74, 0.55), 0 0 8px rgba(255, 40, 55, 0.35); }
}
.inquiry-form__err { color: #ff8d96; font-size: 0.74rem; }
@media (prefers-reduced-motion: reduce) { .inquiry-form__field.is-invalid.is-pulse .inquiry-form__control { animation: none; } }


/* Error text is no longer printed under each field (it made the card grow). It stays in the DOM, visually hidden, so aria-describedby still reads it. */
.inquiry-form__err { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.inquiry-form__err[hidden] { display: none; }
/* One popover sits INSIDE the inquiry form (absolutely positioned over it, never in the flow): no layout shift, it cannot leave the card. */
.page-home .inquiry-panel { position: relative; }
.page-home .inquiry-form { position: relative; }
.inquiry-pop { position: absolute; z-index: 20; left: 8px; right: 8px; top: 8px; box-sizing: border-box; overflow: auto; padding: 10px 38px 10px 14px; color: #fff; text-align: left; background: rgba(14, 5, 8, 0.97); border: 1px solid #ff3347; border-radius: 12px; box-shadow: 0 0 0 1px rgba(255, 51, 71, 0.35), 0 0 22px rgba(255, 30, 50, 0.5), 0 10px 26px rgba(0, 0, 0, 0.6); animation: inq-pop-in 0.18s ease-out; }
.inquiry-pop[hidden] { display: none; }
.inquiry-pop__title { margin: 0 0 4px; font: 700 0.82rem/1.3 "TB Inter", Inter, system-ui, sans-serif; color: #ff8d96; }
.inquiry-pop__list { margin: 0; padding: 0; list-style: none; display: grid; grid-template-columns: 1fr 1fr; gap: 2px 14px; }
.inquiry-pop__list[hidden] { display: none; }
.inquiry-pop__list li { font: 500 0.8rem/1.3 "TB Inter", Inter, system-ui, sans-serif; color: #f4eaec; min-width: 0; overflow-wrap: anywhere; }
.inquiry-pop__list strong { color: #fff; font-weight: 700; }
.inquiry-pop__close { position: absolute; top: 4px; right: 4px; width: 30px; height: 30px; color: #fff; font-size: 1.25rem; line-height: 1; background: transparent; border: 0; border-radius: 8px; cursor: pointer; }
.inquiry-pop__close:hover { background: rgba(255, 255, 255, 0.1); }
.inquiry-pop__close:focus-visible { outline: 2px solid #ff4d5c; }
@keyframes inq-pop-in { from { opacity: 0; } to { opacity: 1; } }
@media (max-width: 760px) { .inquiry-pop__list { grid-template-columns: 1fr; } }
@media (prefers-reduced-motion: reduce) { .inquiry-pop { animation: none; } }

/* Invalid fields keep a slow red-neon breathing pulse (2.6s, box-shadow only) until the guest corrects them. Reduced motion = strong static glow. */
.inquiry-form__field.is-invalid.is-pulse .inquiry-form__control { animation: inq-neon-slow 2.6s ease-in-out infinite; }
@keyframes inq-neon-slow {
  0%, 100% { box-shadow: 0 0 0 1px rgba(255, 59, 74, 0.7), 0 0 6px rgba(255, 40, 55, 0.35); }
  50%      { box-shadow: 0 0 0 2px #ff2a3d, 0 0 20px 3px rgba(255, 30, 50, 0.8); }
}
@media (prefers-reduced-motion: reduce) {
  .inquiry-form__field.is-invalid .inquiry-form__control { animation: none !important; box-shadow: 0 0 0 2px #ff2a3d, 0 0 16px rgba(255, 30, 50, 0.75); }
}
