:root{--booking-ink:#142c4f;--booking-blue:#2563eb;--booking-teal:#087f8c}
body.booking-open{overflow:hidden}
.booking-dialog{padding:0;border:0;border-radius:22px;width:min(980px,calc(100vw - 40px));max-width:none;max-height:92dvh;box-shadow:0 32px 100px #071a4266;color:var(--booking-ink);overflow:hidden;background:#f3f6fc}
.booking-dialog::backdrop{background:#08182f9c;backdrop-filter:blur(5px)}
.booking-header{display:flex;align-items:center;gap:18px;padding:25px 30px;background:linear-gradient(115deg,#102c54,#174caf 72%,#087f8c);color:white}
.booking-header h2{font-size:27px;letter-spacing:-.6px;margin:4px 0 7px;color:white}
.booking-header p{margin:0;font-size:13px;color:#d5e4ff}
.booking-eyebrow{font-size:10px;letter-spacing:2px;font-weight:800;color:#a7d9fa}
.booking-icon{display:grid;place-items:center;width:52px;height:52px;border:1px solid #ffffff40;border-radius:15px;background:#ffffff12;font-size:31px;flex-shrink:0}
.booking-close{margin-left:auto;border:1px solid #ffffff50;background:#ffffff12;color:white;border-radius:10px;font-size:26px;width:38px;height:38px;cursor:pointer;align-self:flex-start}
#booking-form{display:block;padding:0;margin:0;max-height:calc(92dvh - 136px);overflow:auto}
.booking-fields{padding:24px 28px;display:grid;gap:18px}
.booking-fields .reservation-form-card{padding:22px;background:white;border:1px solid #e0e8f4;border-radius:15px;box-shadow:0 4px 15px #1c376b05;margin:0}
.booking-fields .reservation-form-card-heading{display:flex;align-items:center;gap:12px;margin-bottom:19px;border-bottom:1px solid #edf1f8;padding-bottom:16px}
.booking-fields .reservation-form-card-heading h2{font-size:17px;margin:0 0 4px;color:#183356}
.booking-fields .reservation-form-card-heading p{font-size:12px;color:#667b96;margin:0;line-height:1.5}
.booking-fields .form-step-pill{display:grid;place-items:center;width:33px;height:33px;border-radius:10px;background:#eaf1ff;color:#2460cb;font-size:13px;font-weight:800;flex-shrink:0}
.booking-fields .reservation-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 20px}
.booking-fields label{display:flex;flex-direction:column;gap:7px;font-size:12px;font-weight:700;color:#38516f;min-width:0;text-transform:none}
.booking-fields input:not([type=checkbox]):not([type=hidden]),.booking-fields select,.booking-fields textarea{width:100%;box-sizing:border-box;min-height:43px;border:1px solid #d8e2ef;border-radius:9px;background:#fbfcfe;padding:10px 12px;font-family:inherit;font-size:14px;font-weight:400;color:#173353;outline:none}
.booking-fields input:focus,.booking-fields select:focus,.booking-fields textarea:focus{border-color:#5283ed;box-shadow:0 0 0 3px #2563eb17;background:white}
.booking-fields input[readonly]{background:#edf5ff;font-weight:700;color:#1950a7}
.booking-fields .form-wide{grid-column:1/-1}
.booking-fields .document-lookup-strip{background:#eef5ff;border:1px solid #d8e7fc;border-radius:12px;padding:15px;margin-bottom:20px}
.booking-fields .document-lookup-hint{font-size:12px;line-height:1.5}
.booking-fields .errorlist{color:#b42336;font-size:12px;padding-left:15px}
.booking-footer{position:sticky;bottom:0;background:#fffffff5;backdrop-filter:blur(8px);border-top:1px solid #dee6f1;padding:16px 28px;display:flex;align-items:center;gap:10px;z-index:2}
.booking-footer>span{margin-right:auto;color:#6b7e96;font-size:11px}
.booking-footer .action-button{min-height:43px;padding:0 21px;border-radius:10px;font-size:13px;font-weight:700}
.booking-footer .action-blue{box-shadow:0 4px 10px #2563eb25;background:#2563eb;color:white}
.booking-footer [data-booking-close]{background:white;color:#4b6585;border:1px solid #d3deec;box-shadow:none}
.booking-feedback{margin:18px 28px 0;padding:13px 16px;background:#e1f7ec;color:#17603e;border:1px solid #b9e4cd;border-radius:10px;font-size:13px}
.booking-feedback.is-error{background:#fff0f1;border-color:#facdd3;color:#a3263b}
.booking-optional{margin-top:16px;font-size:12px;color:#46688b}.booking-optional summary{cursor:pointer;padding:8px 0}.booking-optional[open] summary{margin-bottom:12px}
.booking-total{background:linear-gradient(120deg,#edf7fb,#edf3ff);border:1px solid #d4e5f4;border-radius:12px;padding:12px 16px;display:flex;flex-direction:column;gap:4px}
.booking-total span,.booking-total small{font-size:11px;color:#587491}.booking-total strong{font-size:23px;color:#0f6990}
.booking-note{padding:12px 15px;border-radius:8px;background:#f2f6fc;font-size:12px;line-height:1.6;color:#5a708b;margin-top:18px}
.booking-loading{padding:60px;text-align:center;color:#627b9b}
.walkin-launch{padding:24px;text-align:center;background:linear-gradient(160deg,#edf5ff,#effbf8);border:1px solid #d8e8f8;border-radius:14px;margin-top:12px}
.walkin-launch-icon{display:grid;place-items:center;width:48px;height:48px;margin:auto;background:#dceaff;color:#2463c9;border-radius:14px;font-size:26px}
.walkin-launch h3{font-size:18px;color:#1c3d66;margin:16px 0 8px}.walkin-launch p{color:#637b95;font-size:13px;line-height:1.6;margin-bottom:20px}
.walkin-launch small{display:block;color:#527d79;font-size:11px;margin-top:15px}.walkin-launch .action-button{padding:13px 22px;border-radius:10px}
.reservation-overview{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin:0 0 22px}
.reservation-metric{padding:19px 22px;border:1px solid #e0e7f2;border-top:3px solid var(--metric-color);background:linear-gradient(135deg,#fff,var(--metric-bg));border-radius:13px;display:flex;align-items:center;gap:15px;box-shadow:0 4px 14px #18355504}
.reservation-metric b{display:grid;place-items:center;width:42px;height:42px;border-radius:12px;background:var(--metric-bg);color:var(--metric-color);font-size:20px}
.reservation-metric span{font-size:12px;color:#617793}.reservation-metric strong{display:block;font-size:27px;color:#193653;line-height:1.3}
.reservations-panel{border-radius:16px;overflow:visible;box-shadow:0 8px 30px #142f5106}
.reservations-panel .reports-filter-form{background:#f5f8fd;border:1px solid #e4ecf7;border-radius:12px;padding:16px;gap:10px;margin-bottom:22px}
.reservations-panel .filter-input,.reservations-panel .filter-select{min-height:42px;border-radius:8px;border-color:#dce5f1;background:white}
.reservations-panel .filter-input{min-width:230px;flex:1}
.reservations-table thead th{background:#18365d;color:#e3efff;letter-spacing:.8px;text-transform:uppercase;font-size:10px;padding:16px 13px;border:0}
.reservations-table thead th:first-child{border-radius:10px 0 0 10px}.reservations-table thead th:last-child{border-radius:0 10px 10px 0}
.reservations-table tbody td{padding:18px 13px;border-bottom:1px solid #e9eef6;font-size:12px;vertical-align:middle;color:#49627d}
.reservations-table{min-width:860px;width:100%;border-spacing:0 5px}
.reservations-table tbody td{background:inherit}
.reservations-table tbody tr:nth-child(even){background:#f8fafd}.reservations-table tbody tr:hover{background:#eef5ff}
.reservations-table td:first-child{border-left:3px solid #d6e3f5}.reservations-table tr[data-status=confirmed] td:first-child{border-left-color:#3973ed}.reservations-table tr[data-status=pending] td:first-child{border-left-color:#e8a42a}.reservations-table tr[data-status=in_house] td:first-child{border-left-color:#1eaa88}
.reservation-guest-cell{display:flex;align-items:center;gap:10px;min-width:140px}.reservation-avatar{width:35px;height:35px;display:grid;place-items:center;border-radius:11px;background:#e7edff;color:#4361a2;font-size:12px;font-weight:800;flex-shrink:0}
.reservation-guest-name{color:#203c5e;font-size:13px;font-weight:700}.reservation-subtext{display:block;color:#8190a3;font-size:10px;margin-top:4px}
.reservation-code-link{color:#2759a2;text-decoration:none;font-size:12px;font-weight:800}.reservation-source{padding:5px 8px;border-radius:6px;background:#eef0f7;color:#647090;font-size:10px}
.reservations-table .room-mini-pill{background:#e9f4fb;color:#177195;border:1px solid #d6e9f4;padding:7px 10px;border-radius:8px;font-weight:800}
.reservation-view{color:#3464a5;text-decoration:none;font-size:11px;font-weight:700;margin-right:9px}
.reservation-status-badge{border-radius:7px!important;font-size:10px!important;padding:7px 9px!important;white-space:nowrap}
.status-pending{background:#fff3d7!important;color:#996716!important}.status-confirmed{background:#e5efff!important;color:#2655b2!important}.status-in-house{background:#dcf5ec!important;color:#11785b!important}.status-completed{background:#e9e7fa!important;color:#65529b!important}.status-cancelled{background:#ffe8ea!important;color:#b24c5c!important}
.reservations-empty-row{padding:55px!important;text-align:center;color:#7b8fa7!important}
@media(max-width:800px){.reservation-overview{grid-template-columns:repeat(2,minmax(0,1fr))}.booking-header{padding:20px}.booking-fields{padding:16px}.booking-fields .reservation-form-card{padding:16px}.booking-footer{padding:14px 16px}.booking-dialog{width:calc(100vw - 20px)}.booking-header h2{font-size:23px}.booking-icon{display:none}}
@media(max-width:520px){.booking-fields .reservation-form-grid{grid-template-columns:1fr}.booking-footer>span{display:none}.booking-footer{justify-content:flex-end}.booking-header p{font-size:11px}.reservation-metric{padding:14px;gap:9px}.reservation-metric b{display:none}.booking-fields .document-lookup-strip{display:flex;flex-direction:column;align-items:stretch}.booking-fields .document-lookup-strip>*{width:100%}}

/* More readable labels in denser registration cards. */
.booking-header{padding:18px 24px}.booking-header h2{font-size:28px}.booking-header p{font-size:14px}
.booking-fields{padding:16px 20px;gap:12px}
.booking-fields .reservation-form-card{padding:16px 18px;border-radius:12px;border-top:3px solid #c8dbf6}
.booking-fields .reservation-form-card-heading{margin-bottom:12px;padding-bottom:10px;gap:10px}
.booking-fields .reservation-form-card-heading h2{font-size:20px}.booking-fields .reservation-form-card-heading p{font-size:14px}
.booking-fields .reservation-form-grid{gap:12px 16px}
.booking-fields label,.reservation-form-card label{font-size:14px;line-height:1.35}
.booking-fields input:not([type=hidden]),.booking-fields select,.booking-fields textarea,.reservation-form-card input:not([type=hidden]),.reservation-form-card select{font-size:16px;min-height:42px;padding:8px 11px}
.booking-optional{font-size:14px;margin-top:8px}.booking-footer{padding:12px 20px}.booking-footer .action-button{font-size:15px}.booking-footer>span{font-size:12px}
.booking-fields .same-customer{margin-bottom:0;padding:11px 12px}.booking-fields .form-step-pill{font-size:15px}
@media(max-width:520px){.booking-fields{padding:12px}.booking-fields .reservation-form-card{padding:14px}.booking-header h2{font-size:24px}}

.walkin-payments [hidden]{display:none!important}
.walkin-payments>label{display:grid;gap:8px;font-weight:650;color:#324e70}
.payment-rows{display:grid;gap:12px;margin-top:16px}
.payment-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:16px;background:#f0f6fd;border:1px solid #c6d9ef;border-radius:12px}
.payment-row label{display:grid;gap:7px;font-size:14px;font-weight:600;color:#324e70}
.payment-add,.payment-remove{border:1px solid #bed2ed;border-radius:8px;background:#fff;color:#27588d;padding:9px 12px;cursor:pointer;font-weight:650}
.payment-add{margin-top:12px}.payment-remove{justify-self:start;color:#9b4051;border-color:#e7bdc6}
.payment-summary{padding:12px 14px;background:#e4f2ec;color:#215d48;border:1px solid #bcd8ca;border-radius:9px;font-weight:700;font-variant-numeric:tabular-nums}
.payment-summary.is-error{background:#fbe8e8;color:#942d40;border-color:#e5b5bf}
@media(max-width:560px){.payment-row{grid-template-columns:1fr}}

/* Wide walk-in workspace, with the same fields and submit flow. */
.walkin-person-column{display:grid;align-content:start;gap:14px;min-width:0}
.walkin-document-buttons{display:flex;flex-wrap:wrap;gap:8px;border:0;padding:0;margin:16px 0 10px;min-width:0}
.walkin-document-buttons legend{font-size:14px;font-weight:700;color:#324e70;margin-bottom:10px}
.booking-fields .walkin-document-buttons label{position:relative;display:flex;flex:1 1 100px;cursor:pointer}
.booking-fields .walkin-document-buttons input[type=radio]{position:absolute;opacity:0;width:1px;min-height:1px;height:1px;padding:0;margin:0}
.walkin-document-buttons span{display:flex;align-items:center;justify-content:center;min-height:46px;width:100%;padding:10px 8px;border:1px solid #b7cce4;border-radius:9px;background:#f5f8fc;color:#294e76;font-weight:700;text-align:center;box-sizing:border-box}
.walkin-document-buttons input:checked+span{background:#e0edff;border:2px solid #2865bd;color:#123f7b;box-shadow:0 2px 6px #235fa51a}
.walkin-document-buttons input:focus-visible+span{outline:3px solid #79b8ff;outline-offset:3px}
.booking-dialog[data-mode=walkin]{width:min(1500px,calc(100vw - 40px))}
.booking-dialog[data-mode=walkin] .booking-fields{align-items:start;gap:16px}
.booking-dialog[data-mode=walkin] .reservation-form-card{min-width:0}
.booking-dialog[data-mode=walkin] .reservation-form-grid>*{min-width:0}
@media(min-width:1000px){
.booking-dialog[data-mode=walkin] .booking-fields{grid-template-columns:minmax(0,1fr) minmax(0,1.15fr)}
.booking-dialog[data-mode=walkin] .walkin-payments{grid-column:1/-1}
.booking-dialog[data-mode=walkin] .payment-row{grid-template-columns:repeat(4,minmax(0,1fr))}
}
@media(min-width:1400px){
.booking-dialog[data-mode=walkin] .booking-fields{grid-template-columns:minmax(0,1.05fr) minmax(0,1.15fr) minmax(0,.85fr)}
.booking-dialog[data-mode=walkin] .walkin-payments{grid-column:auto}
.booking-dialog[data-mode=walkin] .payment-row{grid-template-columns:repeat(2,minmax(0,1fr));padding:12px}
.booking-dialog[data-mode=walkin] .reservation-form-card-heading h2{font-size:19px}
}
@media(max-width:999px){.booking-dialog[data-mode=walkin]{width:calc(100vw - 20px)} }

/* Functional colors for walk-in sections; scoped away from other forms. */
.booking-dialog[data-mode=walkin] [data-ruc-scope=walkin]{--section-accent:#3977ba;--section-bg:#edf5ff;--section-border:#bfd5ee;--section-badge:#d8e9ff;--section-ink:#224e7e}
.booking-dialog[data-mode=walkin] .stay-billing-card{--section-accent:#8861b4;--section-bg:#f4eefb;--section-border:#d9c7ec;--section-badge:#e8daf6;--section-ink:#65418b}
.booking-dialog[data-mode=walkin] .walkin-stay-column{--section-accent:#c58a27;--section-bg:#fff7e8;--section-border:#ead4a9;--section-badge:#fbe7ba;--section-ink:#805711}
.booking-dialog[data-mode=walkin] .walkin-payments{--section-accent:#298b73;--section-bg:#eaf7f1;--section-border:#b8dccd;--section-badge:#ccecdf;--section-ink:#22634f}
.booking-dialog[data-mode=walkin] .reservation-form-card{background:var(--section-bg);border-color:var(--section-border);border-top:4px solid var(--section-accent);box-shadow:0 4px 12px #233f6110}
.booking-dialog[data-mode=walkin] .reservation-form-card-heading{border-color:var(--section-border)}
.booking-dialog[data-mode=walkin] .reservation-form-card-heading h2{color:var(--section-ink)}
.booking-dialog[data-mode=walkin] .form-step-pill{background:var(--section-badge);color:var(--section-ink)}
.booking-dialog[data-mode=walkin] input:not([type=checkbox]):not([type=radio]):not([type=hidden]),.booking-dialog[data-mode=walkin] select,.booking-dialog[data-mode=walkin] textarea{background:#fff;border-color:var(--section-border);color:#203d5a}
.booking-dialog[data-mode=walkin] .same-customer,.booking-dialog[data-mode=walkin] .payment-row{background:#ffffffb8;border-color:var(--section-border)}
.booking-dialog[data-mode=walkin] .booking-total{background:#fff0ca;border-color:#e5c77f;color:#755019}
.booking-dialog[data-mode=walkin] .booking-total strong{color:#755019}
.booking-dialog[data-mode=walkin] .walkin-document-buttons input:checked+span{background:#e7d9f6;border-color:#8052ac;color:#543073}
.booking-dialog[data-mode=walkin] .booking-note{background:#ffffffb0;color:#4e6479}
.booking-dialog[data-mode=walkin] input[type=checkbox]{width:18px;height:18px;min-height:18px;padding:0;margin:0 7px 0 0;vertical-align:middle;accent-color:var(--section-accent)}
.booking-dialog[data-mode=walkin] [data-received-payments]>label{display:flex;align-items:center;gap:7px;margin:12px 0;color:#285d4e}
.booking-dialog[data-mode=walkin] [data-received-payments]>label input{flex:0 0 18px}

/* Reservation follows the same horizontal visual organization. */
.reservation-side-column{display:grid;align-content:start;gap:14px;min-width:0}
.booking-dialog[data-mode=reservation]{width:min(1500px,calc(100vw - 40px))}
.booking-dialog[data-mode=reservation] .booking-fields{align-items:start;gap:16px}
.booking-dialog[data-mode=reservation] .reservation-form-card,.booking-dialog[data-mode=reservation] .reservation-form-grid>*{min-width:0}
.booking-dialog[data-mode=reservation] .document-lookup-strip{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.booking-dialog[data-mode=reservation] .document-lookup-strip label{min-width:0}
.booking-dialog[data-mode=reservation] .document-lookup-hint{grid-column:1/-1;margin:0}
.booking-dialog[data-mode=reservation] .document-lookup-button{justify-self:start}
@media(min-width:1000px){.booking-dialog[data-mode=reservation] .booking-fields{grid-template-columns:minmax(0,1fr) minmax(0,1.1fr)}.booking-dialog[data-mode=reservation] .reservation-side-column{grid-column:1/-1;grid-template-columns:1fr 1fr}}
@media(min-width:1400px){.booking-dialog[data-mode=reservation] .booking-fields{grid-template-columns:minmax(0,1fr) minmax(0,1.15fr) minmax(0,.95fr)}.booking-dialog[data-mode=reservation] .reservation-side-column{grid-column:auto;grid-template-columns:1fr}}
@media(max-width:999px){.booking-dialog[data-mode=reservation]{width:calc(100vw - 20px)}}
/* Functional colors for walk-in sections; scoped away from other forms. */
.booking-dialog[data-mode=reservation] [data-ruc-scope=reservation]{--section-accent:#3977ba;--section-bg:#edf5ff;--section-border:#bfd5ee;--section-badge:#d8e9ff;--section-ink:#224e7e}
.booking-dialog[data-mode=reservation] .stay-billing-card{--section-accent:#8861b4;--section-bg:#f4eefb;--section-border:#d9c7ec;--section-badge:#e8daf6;--section-ink:#65418b}
.booking-dialog[data-mode=reservation] .reservation-stay-column{--section-accent:#c58a27;--section-bg:#fff7e8;--section-border:#ead4a9;--section-badge:#fbe7ba;--section-ink:#805711}
.booking-dialog[data-mode=reservation] .reservation-notes-column{--section-accent:#298b73;--section-bg:#eaf7f1;--section-border:#b8dccd;--section-badge:#ccecdf;--section-ink:#22634f}
.booking-dialog[data-mode=reservation] .reservation-form-card{background:var(--section-bg);border-color:var(--section-border);border-top:4px solid var(--section-accent);box-shadow:0 4px 12px #233f6110}
.booking-dialog[data-mode=reservation] .reservation-form-card-heading{border-color:var(--section-border)}
.booking-dialog[data-mode=reservation] .reservation-form-card-heading h2{color:var(--section-ink)}
.booking-dialog[data-mode=reservation] .form-step-pill{background:var(--section-badge);color:var(--section-ink)}
.booking-dialog[data-mode=reservation] input:not([type=checkbox]):not([type=radio]):not([type=hidden]),.booking-dialog[data-mode=reservation] select,.booking-dialog[data-mode=reservation] textarea{background:#fff;border-color:var(--section-border);color:#203d5a}
.booking-dialog[data-mode=reservation] .same-customer,.booking-dialog[data-mode=reservation] .payment-row{background:#ffffffb8;border-color:var(--section-border)}
.booking-dialog[data-mode=reservation] .booking-total{background:#fff0ca;border-color:#e5c77f;color:#755019}
.booking-dialog[data-mode=reservation] .booking-total strong{color:#755019}
.booking-dialog[data-mode=reservation] .walkin-document-buttons input:checked+span{background:#e7d9f6;border-color:#8052ac;color:#543073}
.booking-dialog[data-mode=reservation] .booking-note{background:#ffffffb0;color:#4e6479}
.booking-dialog[data-mode=reservation] input[type=checkbox]{width:18px;height:18px;min-height:18px;padding:0;margin:0 7px 0 0;vertical-align:middle;accent-color:var(--section-accent)}
.booking-dialog[data-mode=reservation] [data-received-payments]>label{display:flex;align-items:center;gap:7px;margin:12px 0;color:#285d4e}
.booking-dialog[data-mode=reservation] [data-received-payments]>label input{flex:0 0 18px}
