.bjjpw-booking-wrap { max-width: 960px; }
.bjjpw-timezone { margin-bottom: 0; color: var(--bjjpw-muted); font-size: .92rem; }
.bjjpw-booking-step { padding: 1.5rem clamp(1rem, 4vw, 2.25rem); }
.bjjpw-booking-step > h3 { margin-top: 0; }
.bjjpw-booking-step[hidden] { display: none !important; }

.bjjpw-steps {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: .25rem;
    margin: 0;
    padding: 1rem clamp(.75rem, 3vw, 2rem);
    list-style: none;
    border-bottom: 1px solid var(--bjjpw-border);
    background: #fff;
}
.bjjpw-steps li { display: flex; align-items: center; justify-content: center; gap: .4rem; color: var(--bjjpw-muted); font-size: .85rem; font-weight: 700; }
.bjjpw-steps li span { display: inline-grid; width: 1.8rem; height: 1.8rem; place-items: center; border: 1px solid var(--bjjpw-border); border-radius: 999px; background: #fff; }
.bjjpw-steps li.is-current { color: var(--bjjpw-accent); }
.bjjpw-steps li.is-current span,
.bjjpw-steps li.is-complete span { border-color: var(--bjjpw-accent); background: var(--bjjpw-accent); color: #fff; }

.bjjpw-fieldset { margin: 0 0 1.25rem; padding: 0; border: 0; }
.bjjpw-fieldset legend { margin-bottom: .65rem; font-weight: 700; }
.bjjpw-choice-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .8rem; }
.bjjpw-choice { position: relative; display: block; }
.bjjpw-choice input { position: absolute; opacity: 0; pointer-events: none; }
.bjjpw-choice span { display: flex; min-height: 72px; flex-direction: column; justify-content: center; gap: .2rem; padding: .9rem 1rem; border: 1px solid var(--bjjpw-border); border-radius: 10px; cursor: pointer; }
.bjjpw-choice small { color: var(--bjjpw-muted); }
.bjjpw-choice input:checked + span { border-color: var(--bjjpw-accent); box-shadow: 0 0 0 3px rgba(29, 78, 216, .14); }
.bjjpw-choice input:focus-visible + span { outline: 3px solid rgba(29, 78, 216, .2); }
.bjjpw-check-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .65rem; }
.bjjpw-option-check { margin: 0; padding: .75rem; border: 1px solid var(--bjjpw-border); border-radius: 9px; }
.bjjpw-subsection { margin-top: 1.25rem; padding-top: 1rem; border-top: 1px solid var(--bjjpw-border); }
.bjjpw-subsection h4 { margin-top: 0; }
.bjjpw-booking-step .bjjpw-field { margin-bottom: 1rem; }

.bjjpw-step-actions { display: flex; justify-content: flex-end; gap: .75rem; margin-top: 1.5rem; }
.bjjpw-next,
.bjjpw-back { min-height: 46px; padding: .7rem 1rem; border-radius: 8px; font: inherit; font-weight: 700; cursor: pointer; }
.bjjpw-next { border: 0; background: var(--bjjpw-accent); color: #fff; }
.bjjpw-back { border: 1px solid #b5bbc4; background: #fff; color: #20242a; }

.bjjpw-scheduler { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(240px, .8fr); gap: 1rem; }
.bjjpw-calendar-panel,
.bjjpw-time-panel { padding: 1rem; border: 1px solid var(--bjjpw-border); border-radius: 12px; background: var(--bjjpw-surface); }
.bjjpw-calendar-header { display: grid; grid-template-columns: 42px 1fr 42px; align-items: center; margin-bottom: .7rem; text-align: center; }
.bjjpw-calendar-header button { width: 38px; height: 38px; border: 1px solid var(--bjjpw-border); border-radius: 8px; background: #fff; cursor: pointer; font-size: 1.4rem; }
.bjjpw-calendar-header button:disabled { opacity: .35; cursor: default; }
.bjjpw-weekdays,
.bjjpw-calendar-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: .3rem; }
.bjjpw-weekdays span { padding: .35rem 0; color: var(--bjjpw-muted); text-align: center; font-size: .75rem; font-weight: 700; }
.bjjpw-calendar-grid button,
.bjjpw-calendar-blank { min-height: 42px; }
.bjjpw-calendar-grid button { border: 1px solid transparent; border-radius: 8px; background: transparent; color: #20242a; cursor: default; font: inherit; }
.bjjpw-calendar-grid button.has-slots { border-color: #b8c7f5; background: #edf2ff; color: #173b9a; cursor: pointer; font-weight: 700; }
.bjjpw-calendar-grid button.has-slots:hover,
.bjjpw-calendar-grid button.is-selected { border-color: var(--bjjpw-accent); background: var(--bjjpw-accent); color: #fff; }
.bjjpw-time-panel h4 { margin-top: 0; }
.bjjpw-time-list { display: grid; gap: .6rem; }
.bjjpw-time-button { width: 100%; padding: .75rem; border: 1px solid #b8c7f5; border-radius: 8px; background: #fff; color: #173b9a; font: inherit; font-weight: 700; cursor: pointer; }
.bjjpw-time-button:hover,
.bjjpw-time-button.is-selected { border-color: var(--bjjpw-accent); background: var(--bjjpw-accent); color: #fff; }
.bjjpw-time-button small { display: block; margin-top: .15rem; font-weight: 400; }
.bjjpw-selected-slot { margin-top: 1rem; padding: .85rem 1rem; border: 1px solid #87c99a; border-radius: 9px; background: #eef9f1; font-weight: 700; }
.bjjpw-payment-note { color: var(--bjjpw-muted); }

@media (max-width: 760px) {
    .bjjpw-scheduler { grid-template-columns: 1fr; }
    .bjjpw-check-grid { grid-template-columns: 1fr; }
}
@media (max-width: 560px) {
    .bjjpw-choice-grid { grid-template-columns: 1fr; }
    .bjjpw-steps li { font-size: 0; }
    .bjjpw-steps li span { font-size: .85rem; }
    .bjjpw-calendar-grid button,
    .bjjpw-calendar-blank { min-height: 38px; }
}
