/* PM24 v80: Advance Booking + unified PG/Co-living dashboard */
.booking-shell{display:grid;gap:18px}.booking-hero{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:24px;border:1px solid #e5eaf3;border-radius:24px;background:linear-gradient(135deg,#fff 0%,#f6f9ff 55%,#eef8ff 100%);box-shadow:0 16px 45px rgba(31,60,120,.08)}.booking-hero h1{margin:5px 0 7px;font-size:clamp(26px,3vw,38px)}.booking-hero p{margin:0;color:#64748b;max-width:760px}.booking-hero-actions{display:flex;gap:10px;flex-wrap:wrap}.booking-kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}.booking-kpis article{padding:16px;border-radius:18px;border:1px solid #e5eaf3;background:#fff}.booking-kpis span{display:block;color:#64748b;font-size:12px;font-weight:700}.booking-kpis b{display:block;margin-top:6px;font-size:25px}.booking-kpis .today{background:#ecfdf5;border-color:#bbf7d0}.booking-layout{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(310px,.75fr);gap:16px;align-items:start}.booking-list-card,.booking-side{padding:18px;border-radius:22px}.booking-filters{display:grid;grid-template-columns:minmax(190px,1.4fr) repeat(3,minmax(130px,.8fr)) auto auto;gap:9px;align-items:end;padding:12px;border-radius:16px;background:#f8fafc}.booking-filters label,.booking-form label,.booking-mini-form label{display:grid;gap:6px;font-size:12px;font-weight:750;color:#475569}.booking-filters input,.booking-filters select,.booking-form input,.booking-form select,.booking-form textarea,.booking-mini-form input,.booking-mini-form select,.booking-mini-form textarea{width:100%;min-height:43px;border:1px solid #dce3ee;border-radius:12px;background:#fff;padding:9px 11px;color:#0f172a}.booking-form textarea,.booking-mini-form textarea{min-height:82px;resize:vertical}.booking-list-head{display:flex;justify-content:space-between;gap:12px;align-items:end;margin:18px 0 10px}.booking-list-head h2,.booking-list-head h3{margin:2px 0 0}.booking-list-head>span{color:#64748b;font-size:12px}.booking-list{display:grid;gap:8px}.booking-row{display:grid;grid-template-columns:110px minmax(170px,1.2fr) minmax(170px,1fr) 105px 116px;gap:12px;align-items:center;padding:13px;border:1px solid #e8edf5;border-radius:16px;text-decoration:none;color:inherit;background:#fff;transition:.15s ease}.booking-row:hover{border-color:#b8c9eb;transform:translateY(-1px);box-shadow:0 8px 22px rgba(30,64,175,.07)}.booking-row.is-today{border-color:#86efac;background:#f0fdf4}.booking-room b{font-size:17px}.booking-room small,.booking-guest span,.booking-dates span,.booking-money span{display:block;color:#64748b;font-size:11px;margin-top:3px}.booking-guest strong,.booking-dates b,.booking-money b{font-size:14px}.booking-status{display:inline-flex;justify-content:center;align-items:center;min-height:29px;padding:5px 9px;border-radius:999px;background:#eef2ff;color:#3730a3;font-style:normal;font-size:11px;font-weight:800;text-align:center}.booking-status.checked_in{background:#dcfce7;color:#166534}.booking-status.cancelled{background:#fee2e2;color:#991b1b}.booking-status.no_show{background:#ffedd5;color:#9a3412}.booking-empty,.booking-side-empty{padding:38px 16px;text-align:center;color:#64748b}.booking-empty span,.booking-side-empty span{display:block;font-size:34px}.booking-empty h2,.booking-side-empty h2{color:#0f172a;margin:8px 0}.booking-detail-head{display:flex;justify-content:space-between;gap:12px}.booking-detail-head h2{margin:4px 0}.booking-detail-head p{margin:0;color:#64748b}.booking-detail-room{display:grid;gap:4px;padding:14px;margin:15px 0;border-radius:15px;background:#eff6ff}.booking-detail-room span{font-size:12px;color:#475569}.booking-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:0}.booking-detail-grid div{padding:11px;border:1px solid #edf0f5;border-radius:13px}.booking-detail-grid dt{color:#64748b;font-size:11px}.booking-detail-grid dd{margin:4px 0 0;font-size:13px;font-weight:750}.booking-note{padding:13px;margin-top:12px;border-radius:14px;background:#f8fafc}.booking-note.danger{background:#fff7ed}.booking-note p{margin:5px 0 0;color:#475569;font-size:13px}.booking-primary-actions{display:flex;gap:8px;margin:14px 0}.booking-primary-actions form{margin:0}.booking-action-details{margin-top:9px;border:1px solid #e6eaf2;border-radius:14px;overflow:hidden}.booking-action-details summary{cursor:pointer;padding:12px 13px;font-weight:780}.booking-action-details.danger summary{color:#b91c1c}.booking-mini-form{display:grid;grid-template-columns:1fr 1fr;gap:9px;padding:0 12px 13px}.booking-mini-form label:first-of-type,.booking-mini-form label:last-of-type{grid-column:1/-1}.booking-cancel-buttons{display:flex;gap:7px;grid-column:1/-1}.booking-payment-history{margin-top:15px}.booking-payment-history a{display:grid;grid-template-columns:1fr auto;gap:4px;padding:11px 0;border-top:1px solid #edf0f5;color:inherit;text-decoration:none}.booking-payment-history small{grid-column:1/-1;color:#64748b}.booking-dialog{width:min(850px,calc(100vw - 24px));max-height:90vh;border:0;border-radius:24px;padding:0;box-shadow:0 25px 80px rgba(15,23,42,.28)}.booking-dialog::backdrop{background:rgba(15,23,42,.55);backdrop-filter:blur(3px)}.booking-dialog-head{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:18px 20px;border-bottom:1px solid #e8edf5}.booking-dialog-head h2{margin:3px 0 0}.booking-dialog-head button{border:0;background:#f1f5f9;border-radius:50%;width:38px;height:38px;font-size:24px;cursor:pointer}.booking-form{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:18px 20px 22px;overflow:auto}.booking-wide,.booking-form-actions{grid-column:1/-1}.booking-form-actions{display:flex;justify-content:flex-end;gap:9px}.receipt-page.booking-receipt-page{max-width:900px;margin:auto}.receipt-toolbar{display:flex;justify-content:space-between;gap:10px;margin-bottom:14px}.receipt-paper{background:#fff;border:1px solid #e4e9f2;border-radius:22px;padding:28px;box-shadow:0 20px 55px rgba(15,23,42,.08)}.receipt-paper header,.receipt-property,.receipt-guest,.receipt-total{display:flex;justify-content:space-between;gap:18px}.receipt-brand{display:flex;gap:12px;align-items:center}.receipt-brand>span{display:grid;place-items:center;width:52px;height:52px;border-radius:17px;background:#0b74ff;color:#fff;font-weight:900}.receipt-brand h1{margin:0}.receipt-brand p,.receipt-paper small,.receipt-paper span{margin:2px 0 0;color:#64748b}.receipt-number{text-align:right}.receipt-number b,.receipt-number span,.receipt-property b,.receipt-property span,.receipt-guest b,.receipt-guest span{display:block}.receipt-property,.receipt-guest{padding:19px 0;border-top:1px solid #e8edf5;margin-top:20px}.receipt-guest>div{flex:1}.receipt-total{padding:20px;border-radius:18px;background:#eff6ff;align-items:center}.receipt-total strong{font-size:30px}.receipt-total>div:last-child{text-align:right}.receipt-note{padding:16px 0}.receipt-paper footer{text-align:center;border-top:1px dashed #d7deea;padding-top:18px;color:#64748b}.pgco-dashboard{display:grid;gap:17px}.pgco-hero{padding:24px;border-radius:25px;background:linear-gradient(135deg,#0f3f83,#1167b1 55%,#19a4a2);color:#fff;display:flex;justify-content:space-between;gap:20px;align-items:center;box-shadow:0 20px 50px rgba(15,63,131,.2)}.pgco-hero h1{margin:5px 0 7px;font-size:clamp(27px,3vw,40px)}.pgco-hero p{margin:0;color:#d9efff}.pgco-hero-actions{display:flex;gap:9px;flex-wrap:wrap}.pgco-hero-actions .btn.ghost{background:rgba(255,255,255,.14);color:#fff;border-color:rgba(255,255,255,.3)}.pgco-kpis{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:11px}.pgco-kpis article{padding:16px;border:1px solid #e6ebf3;border-radius:18px;background:#fff}.pgco-kpis span{display:block;font-size:12px;color:#64748b}.pgco-kpis b{display:block;margin-top:6px;font-size:24px}.pgco-kpis .vacant{background:#ecfdf5;border-color:#bbf7d0}.pgco-kpis .pending{background:#fff7ed;border-color:#fed7aa}.pgco-grid{display:grid;grid-template-columns:1.35fr .65fr;gap:15px}.pgco-card{padding:18px;border:1px solid #e6ebf3;border-radius:21px;background:#fff}.pgco-card-head{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:13px}.pgco-card-head h2{margin:3px 0 0}.pgco-quick{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.pgco-quick a{padding:15px;border-radius:16px;background:#f8fafc;border:1px solid #e8edf5;text-decoration:none;color:inherit;font-weight:800}.pgco-quick a small{display:block;color:#64748b;font-weight:500;margin-top:5px}.pgco-alert-list{display:grid;gap:8px}.pgco-alert-row{display:flex;justify-content:space-between;gap:12px;padding:11px 12px;border-radius:14px;background:#fff7ed}.pgco-alert-row span{color:#64748b;font-size:12px}.pgco-property-strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.pgco-property-strip a{display:grid;gap:6px;padding:14px;border:1px solid #e7ecf4;border-radius:16px;text-decoration:none;color:inherit}.pgco-property-strip small{color:#64748b}.room-booking-flag{display:block;margin-top:4px;font-size:9px;font-weight:800;color:#7c3aed}.fd-room-ball.booked{background:#f3e8ff!important;border-color:#c4b5fd!important}.fd-room-ball.booked strong,.fd-room-ball.booked small{color:#6d28d9!important}
@media(max-width:1100px){.booking-kpis{grid-template-columns:repeat(3,1fr)}.booking-layout,.pgco-grid{grid-template-columns:1fr}.booking-filters{grid-template-columns:repeat(2,1fr)}.booking-row{grid-template-columns:85px 1.2fr 1fr 90px}.booking-row .booking-status{grid-column:1/-1;justify-self:start}.pgco-kpis{grid-template-columns:repeat(3,1fr)}}
@media(max-width:700px){.booking-hero,.pgco-hero{align-items:flex-start;flex-direction:column}.booking-hero-actions,.pgco-hero-actions{width:100%}.booking-hero-actions .btn,.pgco-hero-actions .btn{flex:1}.booking-kpis,.pgco-kpis{grid-template-columns:repeat(2,1fr)}.booking-filters{grid-template-columns:1fr}.booking-row{grid-template-columns:70px 1fr}.booking-dates,.booking-money{grid-column:2}.booking-detail-grid{grid-template-columns:1fr}.booking-form{grid-template-columns:1fr}.booking-wide,.booking-form-actions{grid-column:auto}.booking-dialog{width:calc(100vw - 12px)}.pgco-quick,.pgco-property-strip{grid-template-columns:1fr 1fr}.receipt-paper{padding:18px}.receipt-paper header,.receipt-property,.receipt-guest,.receipt-total{flex-direction:column}.receipt-number,.receipt-total>div:last-child{text-align:left}}
@media print{.owner-sidebar,.owner-mobile-bar,.owner-page-footer,.receipt-toolbar{display:none!important}.owner-app-content,.owner-page{margin:0!important;padding:0!important}.receipt-paper{box-shadow:none;border:0}}
.room-number-ball.booked{background:#f3e8ff!important;border-color:#c4b5fd!important;color:#6d28d9!important}.room-number-ball.booked b,.room-number-ball.booked small{color:#6d28d9!important}

/* v82: 24-hour auto checkout with explicit manual override */
.booking-checkout-mode{display:grid;gap:6px;align-content:start}.booking-checkout-mode>span{font-size:12px;font-weight:750;color:#475569}.booking-checkout-mode>div{display:flex;gap:8px;min-height:43px;align-items:center;padding:6px;border:1px solid #dce3ee;border-radius:12px;background:#fff}.booking-checkout-mode label{display:flex;align-items:center;gap:7px;min-height:29px;padding:5px 10px;border-radius:9px;background:#f8fafc;cursor:pointer;font-size:12px;font-weight:800;color:#334155}.booking-checkout-mode input{width:auto!important;min-height:0!important;padding:0!important}.booking-checkout-mode small{color:#64748b;font-size:10px;line-height:1.35}.booking-form label[data-booking-checkout-field].is-auto input{background:#f1f5f9;color:#334155;cursor:not-allowed}.booking-form label[data-booking-checkout-field].is-auto::after{content:'Auto: check-in +23 hours';font-size:10px;color:#0f766e;font-weight:700}
@media(max-width:700px){.booking-checkout-mode>div{flex-wrap:wrap}}

/* v84: persistent booking validation + child-age policy */
.booking-form-alert{display:grid;gap:4px;padding:12px 14px;border:1px solid #fecaca;border-radius:14px;background:#fff1f2;color:#9f1239}.booking-form-alert b{font-size:13px}.booking-form-alert span{font-size:11px;color:#be123c}.booking-form label.has-error input,.booking-form label.has-error select,.booking-form label.has-error textarea,.booking-child-ages.has-error input{border-color:#ef4444!important;box-shadow:0 0 0 3px rgba(239,68,68,.12)!important;background:#fff7f7}.booking-required,.booking-optional{display:inline;margin-left:5px;font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.04em}.booking-required{color:#b91c1c}.booking-optional{color:#64748b}.booking-child-policy{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border:1px solid #bfdbfe;border-radius:14px;background:#eff6ff}.booking-child-policy b{flex:0 0 auto;color:#1d4ed8;font-size:12px}.booking-child-policy span{color:#475569;font-size:11px;line-height:1.5}.booking-child-ages{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.booking-child-ages[hidden]{display:none!important}.booking-child-ages label{padding:10px;border:1px solid #e5eaf2;border-radius:13px;background:#f8fafc}.booking-child-ages label>span{font-size:11px;font-weight:800;color:#334155}.booking-child-ages label>small{min-height:14px;color:#0f766e;font-size:9px;line-height:1.3}.booking-age-summary{display:block;margin-top:4px;color:#64748b;font-size:10px;font-weight:600}.booking-dialog .booking-form{scroll-behavior:smooth}
@media(max-width:700px){.booking-child-policy{flex-direction:column;gap:4px}.booking-child-ages{grid-template-columns:1fr 1fr}}
@media(max-width:460px){.booking-child-ages{grid-template-columns:1fr}}
/* V87 booking guest-rule clarity */
.booking-room-policy{display:block;margin-top:7px;color:#1769aa;font-size:12px;line-height:1.4;font-weight:700}
.booking-form label.is-disabled{opacity:.55}
.booking-form label.is-disabled input{background:#eef2f7;cursor:not-allowed}

/* V91 dedicated hospitality Guests / Housekeeping / Payments pages */
.ops-page-shell{display:grid;gap:22px}.ops-page-header{display:flex;justify-content:space-between;gap:20px;align-items:center;padding:26px 30px;border:1px solid #dfe7f4;border-radius:26px;background:linear-gradient(135deg,#fff 0%,#f5f9ff 72%,#effdf8 100%);box-shadow:0 18px 46px rgba(30,55,90,.08)}.ops-page-header h1{margin:4px 0 6px;font-size:clamp(30px,4vw,48px);line-height:1}.ops-page-header p{margin:0;color:#657692}.ops-header-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}.ops-stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.ops-stat-grid article{padding:18px 20px;border:1px solid #dfe7f4;border-radius:20px;background:#fff}.ops-stat-grid article small{display:block;color:#657692;font-weight:800}.ops-stat-grid article b{display:block;margin-top:8px;font-size:29px;color:#111a2e}.ops-stat-grid article.good{background:#edfff6;border-color:#b9f2d1}.ops-stat-grid article.warn{background:#fff8eb;border-color:#f6d59e}.ops-two-column{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(300px,.75fr);gap:18px;align-items:start}.ops-list-card,.ops-detail-card{border-radius:24px;padding:22px}.ops-detail-card{position:sticky;top:18px}.ops-filter-bar{display:grid;grid-template-columns:minmax(190px,1.4fr) minmax(150px,.7fr) auto auto;gap:10px;align-items:end;padding:14px;border-radius:18px;background:#f6f9fd}.ops-filter-bar label{font-weight:800;color:#40516d}.ops-filter-bar input,.ops-filter-bar select{margin-top:7px}.ops-section-title{display:flex;justify-content:space-between;align-items:end;margin:22px 0 12px}.ops-section-title h2{margin:4px 0 0}.ops-record-list{display:grid;gap:10px}.ops-record-row{display:grid;grid-template-columns:minmax(190px,1.2fr) minmax(160px,1fr) minmax(130px,.7fr) auto;gap:12px;align-items:center;padding:15px 16px;border:1px solid #dfe7f4;border-radius:18px;background:#fff;color:#111a2e;text-decoration:none;transition:.18s ease}.ops-record-row:hover,.ops-record-row.is-selected{border-color:#79a7ff;background:#f6f9ff;transform:translateY(-1px)}.ops-record-row div{min-width:0}.ops-record-row b,.ops-record-row span{display:block}.ops-record-row span{margin-top:3px;color:#657692;font-size:13px}.ops-record-row em{font-style:normal}.ops-status{padding:8px 12px;border-radius:999px;font-size:12px;font-weight:900;text-align:center;white-space:nowrap}.ops-status.live{background:#e9fff4;color:#08783f}.ops-status.done{background:#eef2f8;color:#53637d}.ops-detail-card>h2{margin:5px 0 4px;font-size:30px}.ops-detail-card>p{margin:0 0 16px;color:#657692}.ops-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.ops-detail-grid>div{padding:13px;border:1px solid #dfe7f4;border-radius:15px;background:#f9fbfe}.ops-detail-grid small,.ops-detail-grid b{display:block}.ops-detail-grid small{color:#657692}.ops-detail-grid b{margin-top:5px}.ops-detail-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}.ops-payment-history{margin-top:22px}.ops-payment-history h3{margin:0 0 10px}.ops-payment-history>a{display:grid;grid-template-columns:1fr auto;gap:3px 10px;padding:11px 0;border-bottom:1px solid #e7edf6;color:#111a2e;text-decoration:none}.ops-payment-history>a small{grid-column:1/-1;color:#657692}.ops-empty-detail{min-height:330px;display:grid;place-content:center;text-align:center;color:#657692}.ops-empty-detail>b{font-size:38px}.ops-empty-detail h2{margin:10px 0}.ops-empty-detail p{max-width:300px;margin:0 auto}.housekeeping-grid{display:grid;gap:12px}.housekeeping-room{display:grid;grid-template-columns:auto 1fr auto;gap:15px;align-items:center;padding:16px;border:1px solid #ded8ff;border-radius:19px;background:#faf9ff}.housekeeping-room-ball{width:72px;height:72px;border-radius:50%;display:grid;place-content:center;text-align:center;background:linear-gradient(145deg,#8d68ff,#6544db);color:#fff;box-shadow:inset 0 -6px 0 rgba(0,0,0,.12)}.housekeeping-room-ball b{font-size:22px}.housekeeping-room-ball span{font-size:11px;font-weight:900}.housekeeping-room h3{margin:0 0 4px}.housekeeping-room p{margin:0;color:#657692}.housekeeping-room small{display:block;margin-top:5px;color:#657692}.housekeeping-room blockquote{margin:8px 0 0;padding:8px 10px;border-left:3px solid #8566ee;background:#fff;color:#41506b}.housekeeping-history{display:grid;gap:10px;max-height:650px;overflow:auto}.housekeeping-history>div{padding:12px;border:1px solid #e1e8f3;border-radius:14px}.housekeeping-history b,.housekeeping-history span{display:block}.housekeeping-history span{margin-top:3px;color:#657692;font-size:13px}.housekeeping-history p{margin:8px 0 0}.ops-payment-form{display:grid;gap:12px;margin-top:18px}.ops-payment-form label{font-weight:800;color:#40516d}.ops-payment-form input,.ops-payment-form select{margin-top:6px}.ledger-title{margin-top:28px}.payment-ledger{display:grid;gap:7px;max-height:520px;overflow:auto;padding-right:3px}.payment-ledger>a{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:11px 12px;border:1px solid #e2e9f4;border-radius:13px;color:#111a2e;text-decoration:none}.payment-ledger span b,.payment-ledger span small{display:block}.payment-ledger span small{margin-top:3px;color:#657692}.payment-ledger strong{white-space:nowrap}.muted{color:#657692}
@media(max-width:1050px){.ops-two-column{grid-template-columns:1fr}.ops-detail-card{position:static}.ops-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.ops-page-header{align-items:flex-start;flex-direction:column;padding:20px}.ops-header-actions{justify-content:flex-start}.ops-stat-grid{grid-template-columns:1fr 1fr}.ops-filter-bar{grid-template-columns:1fr 1fr}.ops-filter-bar label:first-of-type{grid-column:1/-1}.ops-record-row{grid-template-columns:1fr auto}.ops-record-row>div:nth-child(2),.ops-record-row>div:nth-child(3){grid-column:1}.ops-record-row>.ops-status{grid-column:2;grid-row:1}.ops-detail-grid{grid-template-columns:1fr}.housekeeping-room{grid-template-columns:auto 1fr}.housekeeping-room form{grid-column:1/-1}.housekeeping-room .btn{width:100%}}
