/* Integration-only busy and error states; approved visual layout is unchanged. */
.app-frame.live-busy {cursor:progress}
.app-frame.live-busy button,.app-frame.live-busy a {pointer-events:none}
.booking-submit-status {position:fixed;inset:0;z-index:450;display:grid;place-items:center;padding:24px;background:rgb(32 47 69 / 30%);cursor:progress;}
.booking-submit-panel {width:min(380px,100%);box-sizing:border-box;padding:30px 25px;border:1px solid #dfe5ee;border-radius:22px;background:#fff;color:#233047;box-shadow:0 20px 64px rgb(26 42 65 / 17%);text-align:center;font-family:Figtree,sans-serif;}
.booking-submit-panel strong {display:block;margin:18px 0 9px;font-size:22px;line-height:1.3;letter-spacing:-.4px;}
.booking-submit-panel p {margin:0;color:#637188;font-size:15px;line-height:1.55;}
.booking-submit-spinner {display:inline-block;flex:0 0 auto;width:34px;height:34px;box-sizing:border-box;border:3px solid #e5eaf2;border-top-color:#536c92;border-radius:50%;animation:booking-submit-spin .85s linear infinite;}
.btn .booking-submit-spinner {width:18px;height:18px;border-width:2px;border-color:rgb(255 255 255 / 35%);border-top-color:currentColor;}
.app-frame.booking-submitting .btn[aria-busy="true"] {opacity:1;cursor:progress;}
@keyframes booking-submit-spin {to {transform:rotate(360deg);}}
@media(prefers-reduced-motion:reduce) {.booking-submit-spinner {animation:none;border-style:dotted;border-top-style:solid;}}
@media(max-width:374px) {.booking-submit-status {padding:20px;}.booking-submit-panel {padding:26px 20px;}.booking-submit-panel strong {font-size:20px;}}
.live-booking-error{position:fixed;z-index:500;top:max(12px,env(safe-area-inset-top));left:50%;transform:translateX(-50%);width:min(600px,calc(100% - 24px));padding:16px 20px;border:1px solid #dcc6c6;border-radius:16px;background:#fff7f6;color:#713b38;box-shadow:0 8px 28px #15253b22;display:flex;gap:12px;align-items:center;font:500 15px/1.5 Figtree,sans-serif}
.live-booking-error a{white-space:nowrap;color:inherit;text-decoration:underline}

body.mobilrep-booking-studio .rp-alert-modal{display:none!important}

/* Grid percentage heights can retain an artwork's intrinsic height. Each
   frame already has a definite responsive height; inherit that actual value
   so portrait artwork fits too, without changing the frame, card or width. */
body.mobilrep-booking-studio .device-type-image > img,
body.mobilrep-booking-studio .device-brand-image > img {
 height: inherit;
 max-height: 100%;
 min-height: 0;
 min-width: 0;
 object-fit: contain;
 object-position: center;
}
