.ab-widget{max-width:650px;padding:24px;border:1px solid #ddd;border-radius:12px}.ab-widget label{display:block;margin:12px 0}.ab-widget select,.ab-widget input{display:block;width:100%;padding:10px}.ab-slots{display:grid;grid-template-columns:repeat(auto-fit,minmax(90px,1fr));gap:8px}.ab-slots button{padding:10px;border:1px solid #bbb;background:white;cursor:pointer}.ab-slots button.selected{background:#164a36;color:white}.ab-slots button:disabled{opacity:.35;cursor:not-allowed}.ab-message{margin-top:16px}

.ab-submit{padding:12px 20px;background:#164a36;color:white;border:0;border-radius:6px;cursor:pointer}.ab-submit:disabled{opacity:.4;cursor:not-allowed}.ab-result{font-weight:600}

.ab-pay-panel{margin:18px 0;padding:16px;border:1px solid #ccc;border-radius:8px}.ab-pay-panel[hidden],.ab-select[hidden]{display:none}.ab-pay-submit{padding:12px 18px;background:#164a36;color:white;border:0;border-radius:6px}.ab-pay-submit:disabled{opacity:.5}

.ab-widget{box-sizing:border-box;max-width:100%;width:100%}.ab-widget *{box-sizing:border-box}.ab-widget input,.ab-widget select{max-width:100%;width:100%}.ab-widget .ab-qr{display:block;width:min(100%,300px);height:auto;object-fit:contain;margin:12px auto}.ab-pay-instructions{overflow-wrap:anywhere}.ab-widget .ab-slots{display:flex;flex-wrap:wrap;gap:8px}.ab-widget .ab-slots button{min-width:65px;flex:0 0 auto}@media(max-width:600px){.ab-widget{padding:12px!important}.ab-widget .ab-slots button{min-width:60px;font-size:14px}.ab-widget .ab-pay-panel{padding:12px!important}}

.ab-widget .ab-slots{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.ab-widget .ab-slots button{min-width:0;width:100%;border-radius:9px;min-height:56px;white-space:normal}
.ab-widget .ab-slots button.ab-booked{opacity:.5;text-decoration:line-through;background:#f2f2f2}
@media(max-width:650px){.ab-widget .ab-slots{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Past but unbooked hours retain the same visual style as free hours.
   They remain disabled to prevent retroactive reservations. */
.ab-widget .ab-slots button.ab-past-unbooked,
.ab-widget .ab-slots button.ab-past-unbooked:disabled {
  opacity: 1 !important;
  text-decoration: none !important;
  background: #f7faf8;
  color: #17372b;
  border-color: #d7e3dc;
  cursor: not-allowed;
}
