/* Form styles */
.snb-booking-form {
    max-width: 600px;
    margin: 0 auto;
    padding: 20px;
    background: #f9f9f9;
    border-radius: 5px;
    box-shadow: 0 0 10px rgba(0,0,0,0.1);
    font-family: Raleway, sans-serif;
}

.snb-step {
    display: none;
}

.snb-step.active {
    display: block;
}

#snb-serial.error {
    border-color: #dc3232;
    box-shadow: 0 0 0 1px #dc3232;
}

.snb-alert {
    padding: 10px 15px;
    margin: 0 0 15px 0;
    border-radius: 4px;
    border-left: 4px solid transparent;
}

.snb-alert.snb-error {
    background-color: #ffebee;
    border-color: #dc3232;
    color: #c62828;
}

.snb-alert.snb-success {
    background-color: #e8f5e9;
    border-color: #46b450;
    color: #2e7d32;
    transition: opacity 0.5s ease;
}

.form-group {
    margin-bottom: 15px;
}

.form-control {
    width: 100%;
    padding: 10px;
    border: 1px solid #ddd;
    border-radius: 4px;
    font-size: 16px;
}

.btn {
    padding: 10px 15px;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    font-size: 16px;
}
.snb-availability {
    white-space: pre-line;
}

.btn-primary {
    background: #0073aa;
    color: white;
}

.btn-secondary {
    background: #ddd;
    color: #333;
}

/* Availability messages */
#snb-date-info {
    margin: 15px 0;
    min-height: 60px;
}

.snb-availability {
    padding: 15px;
    margin: 15px 0;
    border-radius: 4px;
}

.snb-available {
    background-color: #e8f5e9;
    border-left: 4px solid #46b450;
}

.snb-unavailable {
    background-color: #ffebee;
    border-left: 4px solid #dc3232;
}

.snb-loading {
    color: #0073aa;
    font-style: italic;
}

/* Alerts */
.snb-alert {
    padding: 10px;
    margin-bottom: 15px;
    border-radius: 4px;
}

.snb-error {
    background: #ffebee;
    color: #c62828;
}

.snb-success {
    background: #e8f5e9;
    color: #2e7d32;
}

/* Number input */
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
    -webkit-appearance: none;
    margin: 0;
}

input[type="number"] {
    -moz-appearance: textfield;
    width: 80px;
}
/* Voucher information styles */
.snb-voucher-info {
    background: #e9e9e9;
    border: 1px solid #e1e1e1;
    border-radius: 5px;
    padding: 10px;
}

.snb-voucher-row {
    display: flex;
    margin-bottom: 8px;
    line-height: 1.4;
}

.snb-voucher-label {
    font-weight: 600;
    width: 150px;
    color: #555;
}

.snb-voucher-value {
    flex: 1;
    color: #222;
}

.snb-step-2 h4 {
    margin: 20px 0 15px;
    color: #444;
    font-size: 1.1em;
}.snb-two-cols{display:grid;grid-template-columns:1fr 1fr;gap:12px}.snb-passenger-row{padding:12px 0;border-bottom:1px solid #e7e7e7}.snb-passenger-row .snb-two-cols{margin-top:8px}.snb-small-info{margin:-5px 0 15px;color:#666;font-size:.92em}.snb-booking-form .form-control{width:100%;box-sizing:border-box}.snb-booking-form select.form-control{min-height:42px}.snb-booking-form #snb-booking-details{margin-top:20px;padding-top:15px;border-top:1px solid #ddd}.snb-booking-form #snb-create-booking{margin:18px 0}.snb-alert{padding:12px 14px;margin-bottom:15px;border-radius:4px}.snb-success{background:#edf8ef}.snb-error{background:#fff0f0}@media(max-width:600px){.snb-two-cols{grid-template-columns:1fr}}

#snb-booking-result{margin-top:12px}#snb-booking-result .snb-alert{margin-bottom:8px}

/* v2.2.0 booking workflow refinements */
#snb-passenger-step { display:block; }
.snb-centered { text-align:center; }
.snb-avail-title { font-weight:700; font-size:1.08em; margin-bottom:8px; }
.snb-avail-line { display:block; margin:4px 0; }
.snb-summary-box { text-align:center; }
.snb-summary-row { margin:5px 0; }
.snb-summary-remaining { margin-top:11px; padding-top:11px; border-top:1px solid rgba(46,125,50,.18); font-weight:600; }
.snb-alert.snb-progress { background:#eef6ff; border-left:4px solid #2271b1; color:#184f78; position:relative; padding-left:42px; }
.snb-alert.snb-progress:before { content:""; position:absolute; left:15px; top:50%; width:14px; height:14px; margin-top:-8px; border:2px solid rgba(34,113,177,.25); border-top-color:#2271b1; border-radius:50%; animation:snb-spin .8s linear infinite; }
@keyframes snb-spin { to { transform:rotate(360deg); } }
/* v2.2.5 multi-voucher booking */
.snb-add-voucher{margin:12px 0 20px}.snb-add-voucher #snb-add-voucher-wrap{margin-top:10px;padding:12px;background:#f7f7f7;border:1px solid #e4e4e4;border-radius:5px}.snb-add-voucher #snb-add-voucher-btn{margin-top:8px}.snb-remove-voucher{border:0;background:transparent;color:#a00;font-size:20px;line-height:1;cursor:pointer;margin-left:8px;padding:0 4px}.snb-voucher-item:last-child{margin-bottom:0}


/* v2.2.6 voucher summary alignment */
.snb-voucher-info {
    text-align: left !important;
}
.snb-voucher-info .snb-voucher-row {
    display: block;
    text-align: left;
    margin-bottom: 14px;
}
.snb-voucher-info .snb-voucher-row:last-child {
    margin-bottom: 0;
}
.snb-voucher-info .snb-voucher-label {
    display: block;
    width: auto;
    margin: 0 0 3px;
    font-weight: 600;
}
.snb-voucher-info .snb-voucher-value {
    display: block;
    width: auto;
    margin: 0;
}

/* v2.2.8 – voucher summary layout (agreed variant 2) */
#snb-voucher-list,.snb-voucher-info{text-align:left!important}
.snb-voucher-info .snb-voucher-row,.snb-voucher-item{display:grid!important;grid-template-columns:minmax(130px, 42%) 1fr;gap:14px;align-items:baseline;text-align:left!important}
.snb-voucher-info .snb-voucher-label,.snb-voucher-info .snb-voucher-value{display:block!important;width:auto!important;text-align:left!important;margin:0!important}
.snb-field-invalid{border-color:#dc3232!important;box-shadow:0 0 0 1px #dc3232!important}
@media(max-width:420px){.snb-voucher-info .snb-voucher-row,.snb-voucher-item{grid-template-columns:1fr 1.1fr;gap:10px}}


/* v2.2.23 – coarse public weekend availability (current month + 3) */
.snb-public-availability{margin:22px 0 8px;padding:18px;border:1px solid #e4e4e4;border-radius:7px;background:#fafafa}
.snb-public-availability h4{margin:0 0 7px;color:#333}
.snb-public-availability-note{margin:0 0 14px;color:#666;font-size:.92em;line-height:1.45}
.snb-public-months{display:grid;gap:8px}
.snb-public-month{display:grid;grid-template-columns:14px minmax(120px,1fr) minmax(150px,1.2fr);gap:10px;align-items:center;padding:10px 12px;background:#fff;border:1px solid #e8e8e8;border-radius:5px}
.snb-public-dot{width:11px;height:11px;border-radius:50%;display:block}
.snb-level-green .snb-public-dot{background:#2e9d50}.snb-level-yellow .snb-public-dot{background:#e3b328}.snb-level-orange .snb-public-dot{background:#e67e22}.snb-level-red .snb-public-dot{background:#c83d3d}
.snb-public-month-name{font-weight:650;color:#333}.snb-public-month-status{color:#555}
@media(max-width:520px){.snb-public-month{grid-template-columns:14px 1fr}.snb-public-month-status{grid-column:2}}

/* v2.2.24 – compact public availability layout */
.snb-public-availability{
    width:100%;
    max-width:100%;
    box-sizing:border-box;
    margin:22px 0 8px;
    padding:18px;
    text-align:left;
    overflow:hidden;
}
.snb-public-availability h4{
    margin:0 0 7px;
    text-align:left;
    line-height:1.25;
}
.snb-public-availability-note{
    max-width:none;
    margin:0 0 14px;
    text-align:left;
}
.snb-public-months{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:10px;
    width:100%;
    max-width:100%;
    box-sizing:border-box;
}
.snb-public-month{
    display:grid;
    grid-template-columns:12px minmax(0,1fr);
    grid-template-areas:"dot month" "dot status";
    column-gap:10px;
    row-gap:2px;
    align-items:center;
    min-width:0;
    width:100%;
    box-sizing:border-box;
    padding:11px 12px;
}
.snb-public-dot{grid-area:dot;align-self:center}
.snb-public-month-name{grid-area:month;min-width:0;line-height:1.25}
.snb-public-month-status{grid-area:status;min-width:0;line-height:1.3;font-size:.92em}
@media(max-width:640px){
    .snb-public-months{grid-template-columns:1fr}
    .snb-public-availability{padding:16px}
}

/* v2.2.25 – keep the SNB availability grid contained inside its Elementor column */
.snb-booking-form{
    width:100%;
    max-width:600px;
    min-width:0;
    box-sizing:border-box;
}
.snb-booking-form #snb-public-availability,
.snb-booking-form #snb-public-availability .snb-public-months,
.snb-booking-form #snb-public-availability .snb-public-month{
    min-width:0;
    max-width:100%;
    box-sizing:border-box;
}
.snb-booking-form #snb-public-availability .snb-public-months{
    display:grid;
    grid-template-columns:minmax(0,1fr) minmax(0,1fr);
}
.snb-booking-form #snb-public-availability .snb-public-month-name,
.snb-booking-form #snb-public-availability .snb-public-month-status{
    overflow-wrap:anywhere;
}
/* Elementor flex/grid items default to min-width:auto; allow the shortcode widget
   containing SNB to shrink inside the assigned right-hand container. */
.elementor-widget-shortcode:has(.snb-booking-form),
.elementor-widget-html:has(.snb-booking-form){
    min-width:0;
    max-width:100%;
}
@media(max-width:640px){
    .snb-booking-form #snb-public-availability .snb-public-months{grid-template-columns:minmax(0,1fr)}
}
