.booking-modal[hidden],.booking-loader[hidden],.booking-fallback[hidden],.booking-frame[hidden]{display:none!important}
body.booking-open{overflow:hidden}
.booking-modal{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:20px;background:rgba(10,24,45,.72);backdrop-filter:blur(6px)}
.booking-dialog{position:relative;display:flex;flex-direction:column;width:min(800px,100%);max-height:min(850px,calc(100dvh - 40px));overflow:hidden;border-radius:12px;background:#fff;box-shadow:0 28px 90px rgba(5,19,38,.3);outline:0}
.booking-header{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:18px 24px;border-bottom:1px solid #e2e8f0}
.booking-header h2{margin:0;color:#172b4a;font-size:clamp(17px,2vw,23px);line-height:1.2}
.booking-close{display:grid;place-items:center;flex:0 0 38px;width:38px;height:38px;border:1px solid #d7e1ef;border-radius:50%;background:#fff;color:#172b4a;font:24px/1 Arial,sans-serif;cursor:pointer}
.booking-close:hover,.booking-close:focus-visible{background:#f1f5fb;outline:2px solid #2455ad;outline-offset:2px}
.booking-body{position:relative;min-height:400px;overflow:auto}
.booking-frame{display:block;width:100%;height:min(690px,calc(100dvh - 125px));min-height:400px;border:0;background:#fff}
.booking-loader{position:absolute;inset:0;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding:28px;background:#fff;color:#172b4a;text-align:center}
.booking-loader p{margin:0;font-size:14px;font-weight:600}
.booking-spinner{width:46px;height:46px;border:4px solid #d9e6f7;border-top-color:#2455ad;border-radius:50%;animation:booking-spin .8s linear infinite}
.booking-progress{width:min(220px,70%);height:3px;overflow:hidden;border-radius:3px;background:#e6edf7}
.booking-progress:after{content:"";display:block;width:35%;height:100%;background:#2455ad;animation:booking-progress 1.6s ease-in-out infinite}
.booking-fallback{margin-top:4px;color:#2455ad;font-size:13px;font-weight:700;text-decoration:underline}
@keyframes booking-spin{to{transform:rotate(360deg)}}
@keyframes booking-progress{from{transform:translateX(-100%)}to{transform:translateX(300%)}}
@media(max-width:600px){.booking-modal{padding:0}.booking-dialog{width:100%;height:100dvh;max-height:none;border-radius:0}.booking-header{padding:12px 16px}.booking-body{flex:1}.booking-frame{height:100%;min-height:100%}}
@media(prefers-reduced-motion:reduce){.booking-spinner,.booking-progress:after{animation:none}}
