.reserve{width:100%;max-width:640px;margin:0 auto 28px;padding:24px 18px;background:#fff;border-radius:18px;box-shadow:0 8px 28px rgba(25,34,48,.08)}
.reserve-kicker{margin:0;color:#2c5cc5;font-size:.8rem;font-weight:800;letter-spacing:.08em}.reserve h1{font-size:1.8rem;margin:.25rem 0}.reserve-lead{margin:0 0 20px;color:#536176}.reserve-progress{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:5px;list-style:none;padding:0;margin:0 0 24px}.reserve-progress li{min-height:52px;padding:8px 2px;text-align:center;border-radius:10px;background:#e8edf7;color:#63718a;font-weight:800;font-size:.9rem}.reserve-progress li span{font-size:.7rem;font-weight:600}.reserve-progress .is-current,.reserve-progress .is-complete{background:#2c5cc5;color:#fff}
.booking-step{padding:16px;margin:0 0 14px;border:1px solid #dce3ef;border-radius:14px;background:#fff}.booking-step h2,.confirmation h2,.completion h2{font-size:1.15rem;margin:0 0 14px}.booking-step h2 span{display:inline-grid;place-items:center;width:28px;height:28px;margin-right:7px;border-radius:50%;background:#2c5cc5;color:#fff;font-size:.9rem}.booking-step label{margin:14px 0 0;font-size:1rem}.booking-step em{font-style:normal;color:#ba1630;font-size:.78rem;margin-left:6px}.booking-step small{font-weight:500;color:#536176}.booking-step input,.booking-step select,.booking-step textarea{width:100%;min-height:54px;font-size:16px;border:1px solid #9cabc1;border-radius:11px;background:#fff}.booking-step textarea{min-height:104px;padding-top:12px}.booking-step select:disabled{background:#eef1f6;color:#788397}.field-help{margin:8px 0 0;color:#5c6980;font-size:.9rem;line-height:1.55}.form-message{margin:0 0 16px;padding:13px;border-radius:11px;background:#fff0f2;color:#a3152c;font-weight:700;line-height:1.5}.confirmation,.completion{padding:20px;border-radius:14px;background:#f2f6ff}.confirmation dl{margin:16px 0}.confirmation dt{margin-top:14px;color:#536176;font-size:.88rem}.confirmation dd{margin:3px 0;font-weight:750;font-size:1.05rem;overflow-wrap:anywhere}.button-row{display:grid;gap:10px}.reserve button{min-height:54px;font-size:1rem;border-radius:11px}.reserve button.secondary{background:#fff;border:1px solid #2c5cc5;color:#244fa9}.completion{text-align:center}.complete-icon{display:grid;place-items:center;width:48px;height:48px;margin:0 auto 12px;border-radius:50%;background:#147a43;color:#fff;font-size:1.7rem;font-weight:800}.number{padding:14px;border-radius:10px;background:#fff;color:#173c95;font-size:1.25rem;font-weight:800;overflow-wrap:anywhere}
@media(max-width:400px){.reserve{margin:0 -2px;padding:18px 12px;border-radius:14px}.reserve h1{font-size:1.65rem}.reserve-progress{gap:3px}.reserve-progress li{min-height:50px;font-size:.82rem}.reserve-progress li span{font-size:.63rem}.booking-step{padding:14px}.booking-step h2{font-size:1.08rem}.reserve button{min-height:56px}}
@media(min-width:621px){.reserve{padding:30px}.button-row{grid-template-columns:1fr 1.3fr}}
.reserve h1{font-size:1.55rem}.reserve-lead{font-size:.95rem;line-height:1.5}.reserve-progress{gap:4px}.reserve-progress li{position:relative;display:flex;align-items:center;justify-content:center;gap:4px;min-height:42px;padding:7px 3px;font-size:.78rem;line-height:1.1}.reserve-progress li b{display:grid;place-items:center;flex:0 0 20px;width:20px;height:20px;border-radius:50%;background:currentColor;color:#fff;font-size:.72rem}.reserve-progress .is-current b,.reserve-progress .is-complete b{background:#fff;color:#2c5cc5}.reserve-progress li span{font-size:.72rem;white-space:nowrap}.reserve-progress li:not(:last-child)::after{content:'›';position:absolute;right:-5px;z-index:1;font-size:1.05rem;color:#75839c}.reserve-progress .is-current:not(:last-child)::after,.reserve-progress .is-complete:not(:last-child)::after{color:#2c5cc5}.booking-step{margin-bottom:12px}.booking-step h2{font-size:1.05rem}.booking-step input,.booking-step select{min-height:56px}.booking-step label,.booking-step select{display:block;width:100%}#step-time{display:block}#step-time label{margin-top:16px}#step-time select{margin-top:7px}.field-help{font-size:.85rem}.form-message{font-size:.92rem}
@media(max-width:400px){.reserve{padding:16px 12px}.reserve h1{font-size:1.42rem}.reserve-lead{font-size:.9rem;margin-bottom:14px}.reserve-progress{margin-bottom:16px}.reserve-progress li{min-height:38px;gap:2px;font-size:.68rem}.reserve-progress li b{flex-basis:18px;width:18px;height:18px;font-size:.66rem}.reserve-progress li span{font-size:.65rem}.reserve-progress li:not(:last-child)::after{right:-4px;font-size:.9rem}.booking-step{padding:13px;margin-bottom:10px}.booking-step h2{font-size:1rem;margin-bottom:10px}.booking-step input,.booking-step select{min-height:56px}.booking-step label{font-size:.94rem}.field-help{font-size:.82rem}.confirmation,.completion{padding:16px}}
.reserve-diagnostics{margin-top:20px;padding:14px;border:1px dashed #65738d;border-radius:12px;background:#f7f9fd}.reserve-diagnostics h2{margin:0 0 8px;font-size:1rem}.reserve-diagnostics pre{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;font:12px/1.55 ui-monospace,SFMono-Regular,Consolas,monospace;color:#25344f}
/* Bound native date-control sizing to the card's content width, including on iOS. */
.booking-step input,.booking-step select,.booking-step textarea{box-sizing:border-box;max-width:100%;min-width:0}
.booking-step input[type="date"]{display:block;box-sizing:border-box;width:100%;inline-size:100%;max-width:100%;max-inline-size:100%;min-width:0;min-inline-size:0}
/* iOS native date sizing: use the available border-box width, preserving the picker. */
@supports (-webkit-touch-callout:none) and (width:-webkit-fill-available){
  .booking-step input[type="date"]{width:-webkit-fill-available;inline-size:-webkit-fill-available}
}
.course-price{margin-top:12px;padding:14px;border:1px solid #bfd0f5;border-radius:12px;background:#f4f7ff}.course-price strong{display:block;color:#173c95;font-size:1.08rem}.course-price dl{display:grid;grid-template-columns:1fr auto;gap:7px 12px;margin:12px 0 0}.course-price dt{color:#536176}.course-price dd{margin:0;font-weight:800;text-align:right;color:#173c95;font-size:1.05rem}.course-price p{margin:12px 0 0;padding-top:10px;border-top:1px solid #cbd8ef;color:#536176;font-size:.88rem;line-height:1.55}
@keyframes reserve-autofill-start{from{opacity:.99}to{opacity:1}}.booking-step input:-webkit-autofill{animation-name:reserve-autofill-start;animation-duration:.01s;animation-iteration-count:1}
.birthday-fields{min-width:0;max-width:100%;margin:14px 0 0;padding:0;border:0}
.birthday-fields legend{padding:0;font-weight:600}
.birthday-parts{display:flex;flex-wrap:wrap;gap:8px;min-width:0;max-width:100%}
.booking-step .birthday-parts label{display:flex;align-items:center;gap:4px;width:auto;max-width:100%;min-width:0;margin:5px 0 0;flex:1 1 68px}
.booking-step .birthday-parts label:first-child{flex:1.4 1 96px}
.booking-step .birthday-parts input{flex:1 1 0;width:0;min-width:0;max-width:100%;height:56px;margin:0;padding:12px 8px;border-radius:11px}
