.otb-form{ font-family:inherit; }
.otb-progress{ display:flex; justify-content:center; gap:10px; margin-bottom:22px; }
.otb-dot{ width:10px; height:10px; border-radius:50%; background:#e3ddc9; transition:background .3s ease, transform .3s ease; }
.otb-dot.is-active{ background:#1E88C7; transform:scale(1.2); }
.otb-dot.is-done{ background:#0B1420; }

.otb-steps-viewport{ overflow:visible; width:100%; min-width:0; }
.otb-steps-track{
	display:block; width:100%; min-width:0; transform:none !important;
}
.otb-step{ display:block; width:100%; min-width:0; padding:2px; position:relative; }
.otb-step[hidden], .otb-step[aria-hidden="true"]{ display:none !important; }
.otb-step.is-active{ animation:otb-step-in .28s ease both; }
@keyframes otb-step-in{ from{ opacity:0; transform:translateY(8px); } to{ opacity:1; transform:none; } }

.otb-row{ display:grid; gap:14px; margin-bottom:16px; }
.otb-row-3{ grid-template-columns:repeat(3,1fr); }
.otb-row-4{ grid-template-columns:repeat(4,1fr); }
.otb-field{ display:flex; flex-direction:column; gap:6px; margin-bottom:16px; }
.otb-field label{ font-size:.8rem; font-weight:600; color:#5B6472; text-transform:uppercase; letter-spacing:.04em; }
.otb-field input, .otb-field select{
	padding:12px 14px; border:1px solid #ddd6c4; border-radius:8px; font-size:.95rem; font-family:inherit;
}
.otb-field input:focus, .otb-field select:focus{ outline:2px solid #1E88C7; border-color:#1E88C7; }
.otb-checkbox label{ display:flex; gap:8px; align-items:center; font-weight:400; text-transform:none; font-size:.88rem; }

/* Step 2: scrollable vehicle list, per the required "scroll to see all vehicles" */
.otb-vehicle-options{
	max-height:420px; overflow-y:auto; display:flex; flex-direction:column; gap:14px;
	padding-right:6px; margin-bottom:18px;
}
.otb-vehicle-card{
	display:grid; grid-template-columns:110px 1fr auto; gap:16px; align-items:center;
	border:2px solid #eee; border-radius:12px; padding:14px; cursor:pointer; text-align:left; background:#fff;
	transition:border-color .2s ease, transform .2s ease;
}
.otb-vehicle-card:hover{ transform:translateY(-2px); }
.otb-vehicle-card.is-selected{ border-color:#1E88C7; background:#EAF6FD; }
.otb-vehicle-card[data-fits="0"]{ opacity:.45; }
.otb-vehicle-card img{ width:100%; height:70px; object-fit:cover; border-radius:8px; background:#eee; }
.otb-vehicle-card strong{ display:block; font-size:1.02rem; }
.otb-vehicle-card .capacity{ font-size:.8rem; color:#5B6472; margin-top:4px; }
.otb-vehicle-card .price{ font-size:1.35rem; font-weight:700; color:#0B1420; white-space:nowrap; }

.otb-payment-options{ display:flex; gap:20px; font-size:.9rem; }
.otb-summary{ background:#F7F4EC; border-radius:10px; padding:16px; margin:16px 0; font-size:.9rem; }
.otb-summary .line{ display:flex; justify-content:space-between; padding:3px 0; }
.otb-summary .total{ font-weight:700; border-top:1px solid #ddd6c4; margin-top:8px; padding-top:8px; }

.otb-step-actions{ display:flex; justify-content:space-between; gap:12px; margin-top:8px; }
.otb-form-message{ font-size:.9rem; margin:0 0 12px; min-height:1.25em; }
.otb-form-message.error{ color:#b3261e; }
.otb-form-message.success{ color:#1b6e3c; }

.otb-manage-form .otb-field{ margin-bottom:0; }

@media (max-width: 700px){
	.otb-row-3, .otb-row-4{ grid-template-columns:1fr; }
	.otb-vehicle-card{ grid-template-columns:80px 1fr; }
	.otb-vehicle-card .price{ grid-column:2; }
}

/* v0.6: accessible controls, unavailable vehicles and confirmation modal */
.otb-add-stop{ align-self:flex-start; color:#0B1F3A; border-color:#0B1F3A; padding:8px 16px; font-size:.82rem; }
.otb-extra-stop-row{ margin-top:8px; }
.otb-vehicle-card{ width:100%; font:inherit; color:inherit; }
.otb-vehicle-card:disabled{ cursor:not-allowed; }
.otb-vehicle-copy{ min-width:0; }
.otb-vehicle-card .capacity, .otb-does-not-fit{ display:block; }
.otb-does-not-fit{ margin-top:5px; color:#8b2f28; font-size:.78rem; font-weight:600; }
.otb-quote-notice{ margin:0 0 14px; padding:10px 12px; border-radius:8px; background:#fff7df; color:#664d03; font-size:.82rem; }
.otb-payment-note{ margin:8px 0 0; color:#5B6472; font-size:.78rem; }
.otb-empty-vehicles{ padding:18px; border:1px dashed #ddd6c4; border-radius:10px; text-align:center; }

.otb-modal[hidden]{ display:none !important; }
.otb-modal{
  position:fixed; inset:0; z-index:999999; display:flex; align-items:center; justify-content:center;
  padding:20px; background:rgba(11,20,32,.66); backdrop-filter:blur(4px);
}
.otb-modal-dialog{
  position:relative; width:min(100%,480px); background:#fff; border-radius:18px; padding:34px;
  text-align:center; box-shadow:0 30px 80px rgba(11,20,32,.3);
}
.otb-modal-close{
  position:absolute; top:12px; right:14px; width:38px; height:38px; border:0; border-radius:50%;
  background:#f1f5f8; color:#0B1420; font-size:1.5rem; line-height:1; cursor:pointer;
}
.otb-modal-icon{
  width:62px; height:62px; margin:0 auto 18px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  background:#e9f8ef; color:#1b6e3c; font-size:1.8rem; font-weight:700;
}
.otb-modal-dialog h3{ margin:0 0 10px; }
.otb-modal-dialog p{ color:#5B6472; }
.otb-modal-reference{ margin:20px 0; padding:14px; border-radius:10px; background:#F7F4EC; }
.otb-modal-reference span, .otb-modal-reference strong{ display:block; }
.otb-modal-reference span{ margin-bottom:4px; font-size:.76rem; text-transform:uppercase; letter-spacing:.06em; }
.otb-modal-reference strong{ color:#0B1420; font-size:1.15rem; }
body.otb-modal-open{ overflow:hidden; }

@media (prefers-reduced-motion: reduce){
  .otb-steps-track, .otb-dot, .otb-vehicle-card{ transition:none !important; }
}

.otb-form .screen-reader-text{
  position:absolute !important; width:1px !important; height:1px !important; padding:0 !important;
  margin:-1px !important; overflow:hidden !important; clip:rect(0,0,0,0) !important;
  white-space:nowrap !important; border:0 !important;
}


/* v0.7: robust theme-independent wizard layout */
.otb-form, .otb-form *{ box-sizing:border-box; }
.otb-form{ width:100%; min-width:0; overflow:visible; }
.otb-form .otb-row, .otb-form .otb-field, .otb-form .otb-step-actions{ min-width:0; }
.otb-form input, .otb-form select, .otb-form textarea, .otb-form button{ max-width:100%; }
.otb-form textarea{ width:100%; }
.otb-form .otb-next, .otb-form .otb-back{ position:relative; z-index:2; }
@media (max-width:700px){
  .otb-form .otb-step-actions{ align-items:stretch; }
  .otb-form .otb-step-actions .btn{ flex:1 1 0; justify-content:center; min-width:0; }
  .otb-vehicle-options{ max-height:none; overflow:visible; }
}

/* v0.8: clear journey-field hierarchy requested for the first booking step */
.otb-form .otb-address-stack{
  display:grid !important;
  grid-template-columns:minmax(0,1fr) !important;
  gap:16px !important;
  width:100% !important;
  margin:0 0 18px !important;
}
.otb-form .otb-address-stack .otb-field,
.otb-form .otb-field--full{
  width:100% !important;
  min-width:0 !important;
  margin:0 !important;
}
.otb-form .otb-address-stack input,
.otb-form .otb-field--full input{
  width:100% !important;
}
.otb-form .otb-passenger-row,
.otb-form .otb-final-journey-row{
  display:grid !important;
  grid-template-columns:repeat(3,minmax(0,1fr)) !important;
  gap:18px !important;
  width:100% !important;
  align-items:end !important;
  margin:0 0 18px !important;
}
.otb-form .otb-passenger-row .otb-field,
.otb-form .otb-final-journey-row .otb-field{
  min-width:0 !important;
  margin:0 !important;
}
.otb-form .otb-passenger-row select,
.otb-form .otb-final-journey-row select,
.otb-form .otb-final-journey-row input{
  width:100% !important;
  min-width:0 !important;
}
.otb-form #otb_return_toggle_row{ margin-top:2px !important; }
.otb-form #otb_return_datetime_wrap{ margin-bottom:18px !important; }

@media (max-width:760px){
  .otb-form .otb-passenger-row,
  .otb-form .otb-final-journey-row{
    grid-template-columns:repeat(3,minmax(0,1fr)) !important;
    gap:10px !important;
  }
  .otb-form .otb-passenger-row label,
  .otb-form .otb-final-journey-row label{
    font-size:.72rem !important;
    letter-spacing:.015em !important;
    overflow-wrap:anywhere;
  }
  .otb-form .otb-passenger-row select,
  .otb-form .otb-final-journey-row select,
  .otb-form .otb-final-journey-row input{
    padding:10px 8px !important;
    font-size:.88rem !important;
  }
}

@media (max-width:520px){
  .otb-form .otb-passenger-row,
  .otb-form .otb-final-journey-row{
    grid-template-columns:1fr !important;
    gap:14px !important;
  }
}
