/* Clear page boundaries and compact, grouped accommodation layouts. */
.section,.membership-section { padding:64px max(24px,5vw); }
#publicView > .section,#publicView > .membership-section { border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.section-heading { gap:36px; margin-bottom:26px; padding-bottom:22px; border-bottom:1px solid var(--line); }
.section-heading h2 { font-size:clamp(32px,3.6vw,46px); }
.section-heading > p { max-width:480px; margin:0; }
.site-header { border-bottom:2px solid var(--line); }
#accommodations { background:var(--paper); }
.property-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px; }
.destination-group { min-width:0; border:1px solid var(--line); background:var(--surface-alt); padding:16px; border-radius:10px; }
.destination-heading { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:2px 2px 16px; }
.destination-heading h3 { margin:0; font-family:Georgia,serif; font-size:23px; font-weight:normal; }
.destination-heading .eyebrow { font-size:9px; margin-bottom:6px; }
.destination-heading > span { font-size:10px; color:var(--muted); white-space:nowrap; padding:7px; border:1px solid var(--line); border-radius:4px; }
.destination-cards { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.property-card { border-radius:6px; }
.property-visual { height:100px; padding:10px; }
.property-code { display:none; }
.destination-number { font-size:54px; top:8px; right:16px; }
.property-silhouette { bottom:12px; left:16px; right:16px; height:28px; }
.property-silhouette:before { height:15px; }
.property-body { padding:14px; }
.property-body h3 { font-size:25px; margin:10px 0 6px; }
.property-body p { font-size:12px; line-height:1.6; min-height:76px; margin:8px 0; }
.property-meta { display:block; font-size:9px; line-height:1.7; }
.property-meta span { display:block; }
.property-footer { margin-top:10px; padding-top:12px; gap:12px; align-items:start; flex-direction:column; }
.property-footer button { font-size:12px; padding:6px 0; }
.property-price strong { font-size:17px; }
.filter-row { padding:12px; background:var(--surface); border:1px solid var(--line); border-radius:8px; margin-bottom:20px; }
.membership-section { margin:24px; border-radius:12px; box-shadow:0 8px 25px #0001; }
.membership-section .section-heading { border-color:#ffffff30; }
.membership-card { border-radius:8px; background:#ffffff08; }
.process-section { background:var(--surface); }
.process-grid article { border:1px solid var(--line); padding:22px; border-radius:8px; background:var(--surface); }
.services-section .process-grid { margin-bottom:32px; }
.panel { border-radius:9px; box-shadow:0 3px 12px #00000008; }
.booking-fields { display:flex; flex-direction:column; gap:20px; }
.booking-fields fieldset { display:grid; grid-template-columns:1fr 1fr; gap:14px; padding:18px; border:1px solid var(--line); border-radius:6px; min-width:0; background:var(--surface-alt); }
.booking-fields legend { padding:0 8px; font-size:11px; font-weight:bold; color:var(--forest); }
.services-section form { margin-top:24px; border-top:3px solid var(--gold); padding:28px; }
.services-section form > h3 { margin:0; padding-bottom:18px; border-bottom:1px solid var(--line); }
.admin-content { padding:28px; }
.admin-topline { padding:0 0 20px; border-bottom:1px solid var(--line); }
.admin-sidebar { border-right:1px solid var(--line); top:var(--site-header-height,74px); height:calc(100dvh - var(--site-header-height,74px)); overflow:auto; }
.customer-sidebar { scroll-margin-top:110px; }
.admin-sidebar .side-link { border:1px solid transparent; border-radius:6px; margin-bottom:6px; }
.admin-sidebar .side-link.active { border-color:#9dcde350; background:#9dcde31c; }
.inventory-controls { background:var(--surface-alt); padding:16px; border:1px solid var(--line); border-radius:8px; gap:12px; }
.inventory-controls > label { flex:1; min-width:135px; }
.inventory-controls .room-legend { order:5; flex-basis:100%; padding-top:14px; border-top:1px solid var(--line); }
.room-legend span { background:var(--surface); border-radius:3px; }
#inventoryResultCount { order:6; margin:0; color:var(--muted); font-size:12px; }
.property-admin-grid { display:block; }
.inventory-group { border:1px solid var(--line); border-radius:9px; margin:20px 0 0; overflow:hidden; background:var(--paper); }
.inventory-group-heading { background:var(--surface-alt); padding:18px; border-bottom:1px solid var(--line); display:flex; justify-content:space-between; align-items:center; gap:12px; }
.inventory-group-heading h3 { margin:0; font-size:21px; font-family:Georgia,serif; }
.inventory-group-heading .eyebrow { font-size:9px; }
.inventory-group-heading > span { color:var(--muted); font-size:12px; white-space:nowrap; }
.inventory-floor { padding:12px; }
.inventory-floor + .inventory-floor { border-top:1px solid var(--line); }
.inventory-floor h4 { display:flex; align-items:center; gap:12px; margin:4px 2px 12px; font-size:13px; }
.inventory-floor h4 span { color:var(--muted); font-size:10px; font-weight:normal; }
.room-tile-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(165px,1fr)); gap:8px; align-items:start; }
.property-admin-card { display:flex; flex-direction:column; align-items:stretch; gap:5px; padding:12px; border-left-width:4px; border-radius:5px; min-width:0; }
.room-tile-heading { display:flex; gap:8px; align-items:center; justify-content:space-between; }
.room-tile-heading h3 { font-size:12px; margin:0; }
.room-dot { width:8px; height:8px; background:var(--room-color); border-radius:50%; flex-shrink:0; }
.property-admin-card .room-status-label { font-size:10px; line-height:1.5; min-height:15px; margin:0; }
.property-admin-card .room-dates { font-size:9px; margin:0; }
.property-admin-card .text-btn { text-align:left; font-size:10px; padding:4px 0; }
.property-admin-card .secret-code { align-self:start; font-size:13px; min-width:78px; padding:4px 8px; }
.room-settings { border-top:1px solid var(--line); margin-top:4px; padding-top:7px; }
.room-settings summary { font-size:10px; cursor:pointer; color:var(--muted); }
.room-settings label { margin-top:10px; font-size:10px; }
.room-settings select { max-width:100%; padding:7px; }

/* My Bellmont is a separate customer page, with its own navigation. */
.customer-page .main-nav,.customer-page #openBookingBtn,.customer-page #staffLogin { display:none; }
.customer-page .header-tools { margin-left:auto; }
.customer-page-view { padding:36px max(22px,5vw) 70px; min-height:calc(100vh - 100px); background:var(--paper); }
#customerHeading { align-items:center; padding:0 0 26px; margin-bottom:24px; gap:20px; }
#customerHeading h1 { font-family:Georgia,serif; font-size:clamp(38px,4vw,54px); font-weight:normal; margin:0; color:var(--heading); }
.portal-back { display:inline-block; font-size:12px; color:var(--muted); text-decoration:none; margin-bottom:26px; }
.portal-intro { color:var(--muted); line-height:1.7; margin-bottom:0; }
.portal-brand-badge { font-size:10px; letter-spacing:.16em; color:var(--muted); border-left:1px solid var(--line); padding:20px; margin-left:auto; }
.portal-access-note { padding:20px 24px; border:1px solid var(--line); border-left:4px solid var(--gold); background:var(--surface-alt); border-radius:6px; margin-bottom:24px; }
.portal-access-note strong,.portal-access-note span { display:block; }
.portal-access-note span { color:var(--muted); font-size:13px; line-height:1.8; margin-top:6px; }
.guest-entry-grid { gap:24px; }
.guest-entry-grid > .panel { padding:28px; border-top:3px solid var(--forest); }
.guest-entry-grid h3 { font-family:Georgia,serif; font-size:26px; margin-top:12px; }
#customerAccessFeedback p:empty { display:none; }
#guestAccessMessage:not(:empty) { padding:14px 18px; background:var(--surface-alt); color:var(--muted); font-size:12px; border:1px solid var(--line); border-radius:6px; margin:20px 0; }
.customer-welcome { display:flex; align-items:center; justify-content:space-between; gap:18px; margin:26px 0; }
.customer-welcome h2 { font-size:27px; font-family:Georgia,serif; font-weight:normal; margin:6px 0; }
.customer-welcome p:last-child { color:var(--muted); font-size:12px; margin-bottom:0; }
.customer-layout { display:grid; grid-template-columns:230px minmax(0,1fr); gap:26px; align-items:start; }
.customer-sidebar { position:sticky; top:115px; background:var(--surface); border:1px solid var(--line); border-radius:9px; padding:20px 12px; }
.customer-sidebar > .eyebrow { padding:0 10px 12px; font-size:9px; }
.customer-sidebar nav { display:grid; gap:7px; }
.customer-sidebar nav button { display:flex; align-items:center; gap:12px; padding:14px 10px; border:1px solid transparent; border-radius:5px; background:transparent; color:var(--muted); text-align:left; font-size:12px; }
.customer-sidebar nav button span { font-size:10px; opacity:.7; }
.customer-sidebar nav button span:last-child { margin-left:auto; }
.customer-sidebar nav button.active { background:var(--surface-alt); border-color:var(--line); color:var(--ink); }
.customer-sidebar-booking { padding:18px 10px 0; margin-top:20px; border-top:1px solid var(--line); }
.customer-sidebar-booking small { font-size:10px; color:var(--muted); }
.customer-sidebar-booking strong { display:block; font-family:monospace; font-size:11px; margin-top:10px; overflow-wrap:anywhere; }
.customer-sidebar-booking p { font-size:12px; color:var(--muted); }
.customer-content { min-width:0; }
.customer-panel-heading { padding:0 0 20px; margin-bottom:20px; border-bottom:1px solid var(--line); }
.customer-panel-heading h2 { font-family:Georgia,serif; font-size:30px; font-weight:normal; margin:8px 0; }
.customer-panel-heading p:last-child { color:var(--muted); font-size:13px; line-height:1.7; margin-bottom:0; }
.customer-content .panel { padding:24px; margin:0 0 18px; }
.customer-content .panel h3 { font-size:18px; margin:0 0 18px; }
.customer-content p { line-height:1.7; font-size:13px; }
.customer-stats { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; margin-bottom:20px; }
.customer-stats article { padding:18px 14px; background:var(--surface-alt); border:1px solid var(--line); border-radius:6px; }
.customer-stats span { display:block; font-size:10px; color:var(--muted); margin-bottom:9px; }
.customer-stats strong { font-size:13px; line-height:1.6; }
.customer-overview-grid { display:grid; grid-template-columns:1fr 1fr; gap:18px; }
.customer-room { border-top:3px solid var(--gold); }
.customer-code { display:flex; align-items:center; justify-content:space-between; gap:12px; border-top:1px solid var(--line); border-bottom:1px solid var(--line); padding:20px 0; margin:20px 0 12px; }
.customer-code > span { font-size:12px; }
.customer-room > small { display:block; color:var(--muted); line-height:1.6; margin-bottom:24px; font-size:11px; }
.customer-order-count { border-top:1px solid var(--line); margin-top:22px; padding-top:18px; font-size:11px; color:var(--muted); }
.customer-details { display:grid; grid-template-columns:1fr 1fr; gap:0 28px; margin:0; }
.customer-details > div { padding:14px 0; border-top:1px solid var(--line); min-width:0; }
.customer-details dt { font-size:11px; color:var(--muted); margin-bottom:7px; }
.customer-details dd { margin:0; font-size:13px; overflow-wrap:anywhere; line-height:1.6; }
.cancellation-area { border-top:1px solid var(--line); margin-top:24px; padding-top:18px; }
.cancellation-area summary { cursor:pointer; color:var(--muted); font-size:12px; }
.danger-button { border-color:#d17373; color:#c75656; }
[data-theme="dark"] .danger-button { color:#ffacac; }
.customer-extra-offers { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; margin-bottom:20px; }
.extra-offer { text-align:left; background:var(--surface-alt); color:var(--ink); border:1px solid var(--line); border-radius:6px; padding:18px; }
.extra-offer span,.extra-offer strong,.extra-offer small { display:block; }
.extra-offer span { font-size:12px; min-height:32px; }
.extra-offer strong { margin:10px 0 18px; font-size:16px; }
.extra-offer small { font-size:11px; color:var(--forest); }
.extra-offer:hover { border-color:var(--gold); }
.customer-extra-row { display:flex; justify-content:space-between; gap:20px; padding:18px 0; border-top:1px solid var(--line); }
.customer-extra-row h4 { margin:0; font-size:14px; }
.customer-extra-row small { color:var(--muted); overflow-wrap:anywhere; }
.customer-extra-row > div:last-child { text-align:right; flex-shrink:0; }
.customer-bill { margin:0 0 24px; }
.customer-bill > div { display:flex; justify-content:space-between; gap:20px; padding:15px 0; border-bottom:1px solid var(--line); font-size:13px; }
.customer-bill dd { margin:0; white-space:nowrap; }
.customer-bill .bill-total { font-weight:bold; font-size:15px; border-bottom:2px solid var(--gold); }
.customer-privilege { border-top:3px solid var(--gold); }
.privilege-discount { font-family:Georgia,serif; font-size:50px; font-weight:normal; color:var(--gold); }
.privilege-progress { background:var(--surface-alt); border:1px solid var(--line); border-radius:6px; padding:20px; margin:24px 0; }
.privilege-progress span,.privilege-progress small { display:block; font-size:12px; }
.privilege-progress progress { display:block; width:100%; height:8px; accent-color:var(--gold); margin:18px 0; }
.inline-success,#customerPreferencesSaved { color:var(--forest); }
@media(min-width:1650px) { .property-footer { flex-direction:row; justify-content:space-between; align-items:end; } }
@media(max-width:1100px) { .property-grid { grid-template-columns:1fr; } .property-body p { min-height:38px; } .property-footer { flex-direction:row; justify-content:space-between; } .customer-layout { grid-template-columns:200px minmax(0,1fr); gap:18px; } .customer-stats { grid-template-columns:1fr 1fr; } .customer-overview-grid { grid-template-columns:1fr; } .customer-extra-offers { grid-template-columns:1fr 1fr; } }
@media(max-width:760px) { .section,.membership-section { padding:36px 18px; } .membership-section { margin:14px; padding:28px 18px; } .destination-group { padding:10px; } .destination-heading { flex-wrap:wrap; } .destination-heading h3 { font-size:21px; } .destination-heading > span { display:none; } .destination-cards { gap:8px; } .property-body { padding:10px; } .property-body h3 { font-size:22px; } .property-body p { min-height:115px; font-size:11px; } .property-footer { flex-direction:column; gap:8px; } .property-footer button { font-size:11px; } .property-price strong { font-size:15px; } .property-visual { height:75px; } .property-silhouette { left:8px; right:8px; } .property-meta span:last-child { display:none; } .admin-content { padding:20px 10px; } #propertiesTab > .panel { padding:12px; } .room-tile-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:7px; } .property-admin-card { padding:9px; } .inventory-controls { padding:10px; } .inventory-group-heading { padding:14px; } .inventory-group-heading .eyebrow { line-height:1.6; } .inventory-group-heading > span { font-size:10px; } .inventory-floor { padding:8px; } .customer-page-view { padding:24px 16px 50px; } #customerHeading { display:flex; flex-wrap:wrap; } .portal-brand-badge { display:none; } .portal-back { margin-bottom:20px; } .portal-access-note { padding:18px; } .guest-entry-grid > .panel { padding:22px; } .customer-layout { grid-template-columns:1fr; } .customer-sidebar { position:static; padding:12px; } .customer-sidebar > .eyebrow,.customer-sidebar-booking { display:none; } .customer-sidebar nav { display:flex; flex-wrap:wrap; gap:6px; } .customer-sidebar nav button { padding:10px; font-size:11px; background:var(--paper); } .customer-sidebar nav button span { display:none; } .customer-content .panel { padding:18px; } .customer-welcome { flex-wrap:wrap; } .customer-welcome h2 { font-size:25px; } .customer-panel-heading h2 { font-size:26px; } .customer-details { grid-template-columns:1fr; } .customer-stats { gap:8px; } .customer-stats article { padding:14px 10px; } .customer-extra-offers { grid-template-columns:1fr 1fr; } .extra-offer { padding:13px; } .extra-offer strong { font-size:14px; } .customer-bill > div { font-size:12px; } .customer-bill .bill-total { font-size:13px; } .services-section form { padding:20px; } }
@media(max-width:360px) { .destination-cards { grid-template-columns:1fr; } .property-body p { min-height:0; } .room-tile-grid { grid-template-columns:1fr; } }
@media(max-width:600px) { .booking-fields fieldset { grid-template-columns:1fr; padding:14px; } }
@media(max-width:760px) { .admin-sidebar { height:auto; overflow:visible; } }

/* Guest services and communication. */
.door-locked { color:var(--muted); font-size:12px; text-align:right; max-width:150px; }
.guest-quicklinks { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; margin:8px 0 22px; }
.guest-quicklinks button { text-align:left; padding:20px; border:1px solid var(--line); border-top:3px solid var(--gold); border-radius:7px; color:var(--ink); background:var(--surface); }
.guest-quicklinks strong,.guest-quicklinks span { display:block; }
.guest-quicklinks strong { font-size:14px; margin-bottom:8px; }
.guest-quicklinks span { font-size:11px; color:var(--muted); line-height:1.6; }
.customer-sidebar { max-height:calc(100dvh - 135px); overflow:auto; }
.customer-sidebar nav button { padding-top:11px; padding-bottom:11px; }
.customer-sidebar nav .badge { margin-left:auto; flex-shrink:0; }
.hotel-rules { padding-left:24px; margin:0; }
.hotel-rules li { padding:12px 0 12px 8px; border-bottom:1px solid var(--line); line-height:1.8; font-size:13px; }
.hospitality-catalog { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:15px; }
.hospitality-catalog .panel { border-top:3px solid var(--gold); }
.hospitality-catalog .panel > strong { font-size:22px; color:var(--forest); }
#serviceForm { gap:22px; }
#serviceForm fieldset { border:1px solid var(--line); background:var(--paper); border-radius:8px; padding:20px; min-width:0; }
#serviceForm legend { padding:0 10px; color:var(--gold); font-size:12px; font-weight:bold; }
#serviceForm header > p:last-child { color:var(--muted); font-size:13px; line-height:1.8; }
#serviceForm .reference-number { font-size:14px; overflow-wrap:anywhere; }
#serviceCreated:empty { display:none; }
#serviceCreated:not(:empty) { padding:20px; background:var(--surface-alt); border:1px solid var(--line); border-left:4px solid var(--gold); border-radius:6px; }
.service-tracking { margin-top:26px; border-top:3px solid var(--gold); }
.request-card { background:var(--surface); border:1px solid var(--line); border-radius:8px; padding:22px; margin:20px 0; overflow-wrap:anywhere; }
.request-card > header { display:flex; align-items:start; gap:20px; justify-content:space-between; border-bottom:1px solid var(--line); padding-bottom:16px; }
.request-card > header small { font-size:10px; color:var(--muted); }
.request-card > header h3 { font-size:17px; margin:10px 0; }
.request-card > header p { color:var(--muted); font-size:12px; }
.request-facts { display:grid; grid-template-columns:1fr 1fr; gap:15px; padding:10px 0; }
.request-facts dt { font-size:10px; color:var(--muted); margin-bottom:6px; }
.request-facts dd { font-size:12px; line-height:1.7; margin:0; }
.request-offer { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:18px; margin:18px 0; border:1px solid var(--gold); border-radius:6px; background:var(--surface-alt); }
.request-offer strong { font-size:14px; }
.request-history { font-size:11px; color:var(--muted); padding:12px 0; border-bottom:1px solid var(--line); }
.request-history summary { cursor:pointer; }
.message-thread { display:grid; gap:12px; max-height:450px; overflow:auto; padding:18px 0; }
.message-bubble { background:var(--surface-alt); border:1px solid var(--line); border-radius:8px; padding:14px; margin-right:8%; min-width:0; }
.message-bubble.message-staff { border-left:3px solid var(--gold); margin-right:0; margin-left:8%; }
.message-bubble.message-system { background:transparent; border-style:dashed; margin:0; }
.message-bubble header { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.message-bubble header strong { font-size:11px; }
.message-bubble header time { color:var(--muted); font-size:10px; }
.message-bubble p { white-space:pre-wrap; overflow-wrap:anywhere; font-size:13px; line-height:1.7; margin-bottom:0; }
.request-update { border-top:2px solid var(--line); padding-top:20px; margin-top:25px; }
.request-reply { padding:16px; background:var(--paper); border:1px solid var(--line); border-radius:7px; }
.service-case { border:1px solid var(--line); border-radius:7px; background:var(--surface); margin-top:14px; overflow:hidden; }
.service-case > summary { cursor:pointer; padding:18px; display:flex; justify-content:space-between; align-items:center; gap:12px; background:var(--surface-alt); font-size:13px; }
.service-case > summary::before { content:'▸'; }
.service-case[open] > summary::before { content:'▾'; }
.service-case > summary > span:first-of-type { margin-right:auto; }
.service-case > summary small { display:block; color:var(--muted); margin-top:8px; font-size:10px; }
.service-case .request-card { border:0; margin:0; }
.desk-section-title { padding-top:28px; margin-top:28px; border-top:2px solid var(--line); }
#serviceDeskFilters { margin:20px 0; padding:18px; border:1px solid var(--line); background:var(--paper); border-radius:6px; align-items:end; }
#serviceDeskCount { font-size:12px; color:var(--muted); }
.status-pill.offered { background:#6b5529; color:#fff1cb; }
.status-pill.inprogress { background:#275962; color:#c9f3f6; }
@media(max-width:760px) { .guest-quicklinks,.hospitality-catalog { grid-template-columns:1fr 1fr; } .guest-quicklinks button { padding:14px; } .customer-sidebar { max-height:none; overflow:visible; } .request-card { padding:15px; } .request-card > header { flex-wrap:wrap; } .request-offer { align-items:start; flex-direction:column; } .message-bubble header { flex-wrap:wrap; gap:6px; } .request-facts { grid-template-columns:1fr; } #serviceForm fieldset { padding:14px; } .service-case > summary { padding:14px; flex-wrap:wrap; } .message-bubble { margin-right:3%; } .message-bubble.message-staff { margin-left:3%; } }
