.nb-booking {
  --nb-black: #0c0c0c;
  --nb-accent: #aa1d43;
  --nb-white: #fff;
  --nb-soft: #eee;
  --nb-text: var(--nb-black);
  --nb-text-muted: #666;
  --nb-surface: var(--nb-white);
  --nb-surface-muted: var(--nb-soft);
  --nb-border: #ccc;
  --nb-primary-bg: var(--nb-black);
  --nb-primary-text: var(--nb-white);
  --nb-primary-hover-bg: var(--nb-accent);
  --nb-primary-hover-text: var(--nb-white);
  --nb-nav-bg: var(--nb-white);
  --nb-nav-text: var(--nb-black);
  --nb-nav-border: var(--nb-border);
  --nb-nav-hover-bg: var(--nb-accent);
  --nb-nav-hover-text: var(--nb-white);
  --nb-nav-hover-border: var(--nb-accent);
  --nb-available-bg: var(--nb-white);
  --nb-available-border: var(--nb-accent);
  --nb-available-text: var(--nb-accent);
  --nb-selected-bg: var(--nb-accent);
  --nb-selected-text: var(--nb-white);
  --nb-full-bg: var(--nb-black);
  --nb-full-text: var(--nb-white);
  --nb-full-border: var(--nb-white);
  --nb-closed-bg: rgba(12, 12, 12, .75);
  --nb-closed-text: var(--nb-white);
  --nb-closed-border: var(--nb-black);
  --nb-slot-bg: var(--nb-soft);
  --nb-slot-text: var(--nb-black);
  --nb-slot-border: var(--nb-border);
  --nb-slot-hover-bg: var(--nb-accent);
  --nb-slot-hover-text: var(--nb-white);
  --nb-slot-disabled-bg: var(--nb-soft);
  --nb-slot-disabled-text: #888;
  --nb-language-bg: var(--nb-white);
  --nb-language-text: var(--nb-black);
  --nb-language-border: var(--nb-border);
  --nb-language-selected-bg: var(--nb-white);
  --nb-language-selected-text: var(--nb-black);
  --nb-language-selected-border: var(--nb-black);
  --nb-input-bg: var(--nb-white);
  --nb-input-text: var(--nb-black);
  --nb-input-border: var(--nb-border);
  --nb-quantity-button-bg: var(--nb-white);
  --nb-quantity-button-text: var(--nb-black);
  --nb-quantity-button-border: var(--nb-border);
  --nb-quantity-button-hover-bg: var(--nb-black);
  --nb-quantity-button-hover-text: var(--nb-white);
  --nb-error-text: #b42318;
  --nb-success-text: #237a3b;
  container-type: inline-size;
  margin: 1.5rem 0;
  padding: 1.25rem;
  border: 1px solid var(--nb-border);
  border-radius: 14px;
  background: var(--nb-surface);
  color: var(--nb-text);
}

.nb-booking__summary [data-nb-pricing-status].is-valid { color:#198754; }
.nb-booking__summary [data-nb-pricing-status].is-invalid { color:#AA1D43; }
.nb-participant__rule { display:block; width:100%; margin-top:6px; color:#666; }

.nb-booking__title { margin: 0 0 1rem; }
.nb-booking__layout { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(320px, .85fr); align-items: start; gap: 1.5rem; }
.nb-booking__journey { min-width: 0; }
.nb-booking__selection { position: sticky; top: 1.25rem; min-width: 0; padding-left: 1.5rem; border-left: 1px solid var(--nb-border); }
.nb-booking__panel[hidden] { display: none !important; }
.nb-booking__panel.is-entering { animation: nb-panel-enter .26s ease both; }
@keyframes nb-panel-enter { from { opacity: 0; transform: translateX(24px); } to { opacity: 1; transform: translateX(0); } }
.nb-booking__back {
  display: inline-flex;
  min-height: 48px;
  align-items: center;
  justify-content: center;
  margin: 0 0 1.25rem;
  padding: .8rem 1.25rem;
  border: 1px solid var(--nb-black);
  border-radius: 0;
  background: var(--nb-black);
  color: var(--nb-white);
  font-size: 1rem;
  font-weight: 700;
  line-height: 1.2;
  cursor: pointer;
  touch-action: manipulation;
  transition: background .2s, border-color .2s, color .2s;
}
.nb-booking__back:hover,
.nb-booking__back:focus-visible {
  border-color: var(--nb-accent);
  background: var(--nb-accent);
  color: var(--nb-white);
  text-decoration: none;
}
.nb-booking__step-title { margin: 0 0 .85rem; }
.nb-calendar { width: 100%; max-width: 620px; padding: 1rem; border: 1px solid var(--nb-border); border-radius: 12px; background: var(--nb-surface); }
.nb-calendar__header { display: flex; align-items: center; justify-content: space-between; margin-bottom: .75rem; }
.nb-calendar__nav { width: 40px; height: 40px; border: 1px solid var(--nb-nav-border); border-radius: 50%; background: var(--nb-nav-bg); color: var(--nb-nav-text); font-size: 1.5rem; cursor: pointer; transition: background .2s, color .2s, border-color .2s; }
.nb-calendar__nav:hover,
.nb-calendar__nav:focus-visible { border-color: var(--nb-nav-hover-border); background: var(--nb-nav-hover-bg); color: var(--nb-nav-hover-text); }
.nb-calendar__weekdays,
.nb-calendar__grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: .4rem; text-align: center; }
.nb-calendar__weekdays { margin-bottom: .4rem; color: var(--nb-text-muted); font-size: .75rem; }
.nb-calendar__day { aspect-ratio: 1; border: 1px solid transparent; border-radius: 10px; background: var(--nb-surface-muted); color: var(--nb-text-muted); transition: background .2s, color .2s, border-color .2s; }
.nb-calendar__day.is-available { border-color: var(--nb-available-border); background: var(--nb-available-bg); color: var(--nb-available-text); font-weight: 700; cursor: pointer; }
.nb-calendar__day.is-today { border-color: var(--nb-accent); }
.nb-calendar__day.is-available:hover,
.nb-calendar__day.is-selected { border-color: var(--nb-selected-bg); background: var(--nb-selected-bg); color: var(--nb-selected-text); }
.nb-calendar__day:disabled { border-color: var(--nb-closed-border); background: var(--nb-closed-bg); color: var(--nb-closed-text); cursor: not-allowed; }
.nb-calendar__day:disabled:hover { color: var(--nb-closed-text); }
.nb-calendar__day.is-full,
.nb-calendar__day.is-full:disabled { border-color: var(--nb-full-border); background: var(--nb-full-bg); color: var(--nb-full-text); }
.nb-calendar__day.is-full:hover { color: var(--nb-full-text); }
.nb-slots {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .65rem;
  margin: 0;
}
.nb-slots .nb-booking__step-title { grid-column: 1 / -1; }
.nb-slot {
  display: inline-flex;
  min-height: 52px;
  align-items: center;
  justify-content: center;
  margin: 0;
  padding: .75rem 1rem;
  border: 1px solid var(--nb-slot-border);
  border-radius: 0;
  background: var(--nb-slot-bg);
  color: var(--nb-slot-text);
  font-size: 1rem;
  font-weight: 700;
  line-height: 1.2;
  text-align: center;
  cursor: pointer;
  touch-action: manipulation;
  transition: background .2s, color .2s, border-color .2s;
}
.nb-slot:hover { background: var(--nb-slot-hover-bg); color: var(--nb-slot-hover-text); }
.nb-slot.is-selected { border-color: var(--nb-selected-bg); background: var(--nb-selected-bg); color: var(--nb-selected-text); }
.nb-slot:disabled { border-color: var(--nb-border); background: var(--nb-slot-disabled-bg); color: var(--nb-slot-disabled-text); text-decoration: line-through; }
.nb-booking__date-messages { margin: 0 0 1rem; background: var(--nb-soft); color: var(--nb-black); }
.nb-booking__date-messages[hidden] { display: none !important; }
.nb-booking__date-message { padding: .85rem 1rem; border-left: 3px solid var(--nb-accent); }
.nb-booking__date-message + .nb-booking__date-message { border-top: 1px solid var(--nb-border); }
.nb-booking__date-message strong { display: block; margin: 0 0 .25rem; }
.nb-booking__date-message p { margin: 0; }
.nb-booking__date-message-content > :first-child { margin-top: 0; }
.nb-booking__date-message-content > :last-child { margin-bottom: 0; }
.nb-participants { margin: 0; }
.nb-booking__languages { margin: 0; padding: 0; border: 0; border-radius: 0; background: transparent; }
.nb-booking__languages[hidden] { display: none !important; }
.nb-booking__free-ticket {
  margin: 0 0 1.25rem;
  padding: 1rem;
  border-left: 3px solid var(--nb-accent);
  background: var(--nb-soft);
  color: var(--nb-black);
}
.nb-booking__free-ticket p { margin: .4rem 0 0; }
.nb-participant { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .8rem 0; border-bottom: 1px solid var(--nb-border); }
.nb-participant small,
.nb-participant span { display: block; }
.nb-participant small { color: var(--nb-text-muted); }
.nb-participant span { font-weight: 600; }
.nb-quantity { display: inline-flex; align-items: stretch; }
.nb-participant input { width: 52px; min-height: 42px; padding: .5rem .25rem; border: solid var(--nb-input-border); border-width: 1px 0; border-radius: 0; background: var(--nb-input-bg); color: var(--nb-input-text); text-align: center; }
.nb-participant input:focus { position: relative; z-index: 1; outline: 2px solid var(--nb-accent); outline-offset: -2px; }
.nb-quantity__button { width: 42px; min-height: 42px; padding: 0; border: 1px solid var(--nb-quantity-button-border); border-radius: 0; background: var(--nb-quantity-button-bg); color: var(--nb-quantity-button-text); font-size: 1.25rem; font-weight: 700; cursor: pointer; touch-action: manipulation; }
.nb-quantity__button:hover:not(:disabled),
.nb-quantity__button:focus-visible { background: var(--nb-quantity-button-hover-bg); color: var(--nb-quantity-button-hover-text); }
.nb-quantity__button:disabled { opacity: .35; cursor: not-allowed; }
.nb-booking__summary { margin-top: 1.25rem; padding: 1rem; border: 1px solid var(--nb-border); background: var(--nb-surface-muted); }
.nb-booking__summary[hidden] { display: none !important; }
.nb-booking__summary h4 { margin: 0 0 .75rem; }
.nb-booking__summary dl { margin: 0; }
.nb-booking__summary dl > div { display: grid; grid-template-columns: minmax(90px, .4fr) 1fr; gap: 1rem; padding: .45rem 0; border-bottom: 1px solid var(--nb-border); }
.nb-booking__summary dl > div:last-child { border-bottom: 0; }
.nb-booking__summary dt { color: var(--nb-black); font-weight: 400; }
.nb-booking__summary dd { margin: 0; text-align: right; font-weight: 600; }
.nb-booking__summary-total { margin-top: .35rem; font-size: 1.15rem; }
.nb-booking__summary-total dd { color: var(--nb-accent); }
.nb-booking__status { color: var(--nb-text-muted); }
.nb-booking__submit { display: flex; align-items: center; justify-content: center; gap: .65rem; width: 100%; margin-top: 1rem; padding: .85rem 1rem; border: 1px solid var(--nb-primary-bg); border-radius: 0; background: var(--nb-primary-bg); color: var(--nb-primary-text); font-weight: 700; transition: background .2s, color .2s, border-color .2s; }
.nb-booking__submit:hover:not(:disabled),
.nb-booking__submit:focus-visible { border-color: var(--nb-primary-hover-bg); background: var(--nb-primary-hover-bg); color: var(--nb-primary-hover-text); }
.nb-booking__submit:disabled { opacity: .55; }
.nb-booking__loader { width: 17px; height: 17px; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: nb-booking-spin .7s linear infinite; }
.nb-booking__loader[hidden] { display: none !important; }
@keyframes nb-booking-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .nb-booking__loader { animation-duration: 1.5s; } }
.nb-booking__message { margin: .65rem 0 0; color: var(--nb-text-muted); }
.nb-booking__message.is-error { color: var(--nb-error-text); }
.nb-booking__message.is-success { color: var(--nb-success-text); }

@media (max-width: 900px) {
  .nb-booking__layout { grid-template-columns: 1fr; }
  .nb-booking__selection { position: static; padding: 1.25rem 0 0; border-top: 1px solid var(--nb-border); border-left: 0; }
  .nb-calendar { max-width: none; }
}
@container (max-width: 780px) {
  .nb-booking__layout { grid-template-columns: 1fr; }
  .nb-booking__selection { position: static; padding: 1.25rem 0 0; border-top: 1px solid var(--nb-border); border-left: 0; }
  .nb-calendar { max-width: none; }
}
@media (max-width: 480px) {
  .nb-booking { padding: 1rem; }
  .nb-slots { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .nb-calendar__weekdays,
  .nb-calendar__grid { gap: .2rem; }
  .nb-participant { align-items: flex-start; }
  .nb-booking__summary dl > div { grid-template-columns: 1fr; gap: .15rem; }
  .nb-booking__summary dd { text-align: left; }
}
