/* Live React adapters for the approved marketplace compositions.
   Inventory, price, filter and enquiry states use existing application APIs. */
.marketplace-page svg{width:20px;height:20px;flex-shrink:0}
.marketplace-page [hidden]{display:none!important}
.marketplace-page button:disabled,.marketplace-page input:disabled{opacity:.55;cursor:not-allowed}
.marketplace-page .nav-wrap{position:relative}
.live-mobile-nav{position:absolute;top:100%;left:0;right:0;background:var(--ec-white);z-index:80;padding:16px;border:1px solid var(--ec-line);border-radius:var(--ec-radius-panel)}
.live-chevron{width:7px;height:7px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg);flex:none;margin:0 4px 4px 10px}
.quick-search a{padding:8px;color:var(--ec-plum);font-size:13px}
.quick-search a:last-child{border-left:1px solid var(--ec-line);padding-left:16px}
.live-field{display:flex;flex-direction:column;gap:8px;font-size:calc(13px * var(--ec-label-scale));font-weight:600;min-width:0;color:var(--ec-label-color)}
.live-field .ec-input{width:100%;min-width:0;min-height:48px;padding:12px 14px;border:1px solid var(--ec-field-border);border-radius:var(--ec-radius-control);background:var(--ec-white);color:var(--ec-ink);font:400 16px var(--ec-font-body);box-sizing:border-box}
.live-field textarea.ec-input{resize:vertical;min-height:88px}
.live-field-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.live-enquiry .live-contact-fields{grid-template-columns:1fr;gap:16px}
.live-error{font-size:13px;color:var(--ec-danger)}
.live-destination-option{display:flex;align-items:center;gap:12px;width:100%;text-align:left;border:0;border-radius:12px;background:transparent;padding:12px;min-height:62px;color:var(--ec-plum)}
.live-destination-option>svg{padding:10px;box-sizing:content-box;background:var(--ec-subtle);border-radius:12px}
.live-destination-option[aria-selected=true],.live-destination-option:hover{background:var(--ec-subtle)}
.live-destination-option span{display:flex;flex-direction:column;gap:2px}.live-destination-option strong{font-size:14px}.live-destination-option small{font-size:12px;color:var(--ec-muted)}
.destination-popover [role=listbox]{max-height:340px;overflow:auto}
.live-keyword-search{padding:12px!important;display:flex;align-items:center;gap:8px}
.marketplace-page .search-popover{z-index:100;text-align:left}.marketplace-page .search-field{position:relative}
.marketplace-page .stay-option{display:flex;align-items:center;gap:8px;min-height:56px}.marketplace-page .stay-option input{position:absolute;opacity:0;width:1px;height:1px}.marketplace-page .stay-option:has(input:checked){border-color:var(--ec-plum);background:var(--ec-subtle)}
.marketplace-page .stay-option:focus-within{outline:2px solid var(--ec-plum);outline-offset:2px}
.marketplace-page .stay-option .choice-check{position:static}
.marketplace-page .budget-presets{margin-top:16px}
.marketplace-page .live-field+.budget-presets{grid-template-columns:repeat(2,1fr)}
.property-image-placeholder{display:flex;min-height:160px;align-items:center;justify-content:center;flex-direction:column;gap:12px;width:100%;height:100%;background:var(--ec-subtle);color:var(--ec-plum)}
.ec-destination-card .property-image-placeholder{min-height:100%}.ec-home-photo .property-image-placeholder,.listing-card-photo .property-image-placeholder{position:absolute;inset:0}
.ec-home-card .ec-home-copy h3,.listing-card h3{overflow-wrap:anywhere}
.ec-home-amenities svg,.home-amenities svg{width:16px;height:16px}
.live-collection-action{text-align:center;margin-top:24px}.live-inventory-count{font-size:13px;color:var(--ec-muted)}
.live-pagination{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:32px;font-size:13px;color:var(--ec-muted)}
.live-pagination .button{min-height:44px;padding:10px 18px}
.active-filters>a{display:inline-flex;align-items:center;gap:12px;padding:8px 12px;min-height:36px;border:1px solid var(--ec-line);border-radius:999px;color:var(--ec-plum);background:var(--ec-subtle);font-size:13px}
.active-filters>a.ds-clear-filters{background:none;border:0;text-decoration:underline}
.amenity-choice span{display:flex;align-items:center;gap:10px}
.listing-filter-dialog form{display:flex;flex-direction:column;max-height:88dvh}.listing-filter-dialog .filter-dialog-content{overflow:auto}.listing-filter-dialog .filter-dialog-footer{flex-shrink:0}
.live-loading{min-height:60vh;padding-block:80px}
.live-dialog{max-width:760px;width:calc(100% - 40px);max-height:88dvh;overflow:auto}.live-dialog .amenity-grid{margin-top:24px}
.live-description{white-space:pre-line}.live-description:empty{display:none}
.detail-page .property-heading{align-items:flex-start}
.property-heading-copy{min-width:0;max-width:78ch}
.property-heading-copy h1{overflow-wrap:anywhere;text-wrap:balance}
.property-heading-description{max-width:68ch;margin-top:12px;color:var(--ec-muted);font-size:14px;line-height:1.7}
.detail-page .property-about .live-description{max-width:75ch;font-size:16px;line-height:1.75;overflow-wrap:anywhere}
.property-about .about-more .live-description{margin-top:16px}
@media(max-width:590px){.detail-page .property-heading{flex-direction:column;align-items:stretch;gap:12px}.property-heading .property-actions{align-self:flex-start}}
.live-room-list{display:grid;gap:24px}.live-room-option .room-offer{margin-bottom:0}.live-room-details{margin-top:12px;font-size:14px}.live-room-details summary{cursor:pointer;display:flex;align-items:center;justify-content:space-between;min-height:44px;font-weight:600;color:var(--ec-plum)}
.live-room-details dl{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:16px;background:var(--ec-subtle);border-radius:16px;margin:12px 0}.live-room-details dt{color:var(--ec-muted);font-size:12px}.live-room-details dd{margin:4px 0 0}.live-room-details ul{padding-left:20px;columns:2}.live-room-details p{margin-top:12px}
.live-enquiry{display:flex;flex-direction:column;gap:16px;margin-top:24px;padding-top:24px;border-top:1px solid var(--ec-line)}.live-enquiry h3{font-size:18px;margin:0}.live-enquiry .planner-inclusions{margin:-8px 0 0}.live-enquiry .button{width:100%;justify-content:center}.live-enquiry .planner-note{margin:0}
.live-operator{margin-top:24px;padding-top:20px;border-top:1px solid var(--ec-line);font-size:13px;color:var(--ec-muted)}.live-operator p{margin:0 0 8px}.live-operator .text-link{display:inline-flex;gap:8px;align-items:center;font-size:12px}
.live-enquiry-success{padding:24px 0}.live-enquiry-success a{text-decoration:underline}
.live-action-status{position:fixed;right:20px;bottom:100px;top:auto;min-width:200px;background:var(--ec-white);padding:10px 14px;border:1px solid var(--ec-line);border-radius:12px;font-size:12px;z-index:5}
.live-gallery-few{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.live-gallery-few .gallery-large{grid-row:auto}.live-photo-caption{text-align:center;margin:16px}.gallery-thumbs button[aria-pressed=true]{outline:2px solid var(--ec-plum);outline-offset:2px}
/* One photo needs the entire gallery; preserve its full frame at every viewport width. */
.detail-page .property-gallery.live-gallery-single{grid-template-columns:minmax(0,1fr);grid-template-rows:clamp(260px,42vw,520px);gap:0}
.detail-page .property-gallery.live-gallery-single .gallery-large{grid-column:1;grid-row:1;min-width:0;min-height:0}
.detail-page .property-gallery.live-gallery-single img{object-fit:contain}
.detail-page .property-gallery.live-gallery-single button:hover img{transform:none}
.gallery-dialog .gallery-stage .property-image{width:100%;height:100%;object-fit:contain}
.live-location-panel{display:flex;gap:20px;padding:36px;background:var(--ec-subtle);border:1px solid var(--ec-line);border-radius:var(--ec-radius-panel);margin-top:24px}.live-location-panel>svg{width:32px;height:32px}.live-location-panel p{margin:12px 0 20px;max-width:650px}.live-nearby{display:grid;grid-template-columns:repeat(3,1fr);gap:8px 24px;margin-top:20px;font-size:14px}.live-nearby p{display:flex;justify-content:space-between;gap:12px}.live-nearby span{color:var(--ec-muted)}
.live-related-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.live-reviews{display:grid;gap:20px}.live-reviews article{padding-bottom:16px;border-bottom:1px solid var(--ec-line)}
@media(max-width:760px){.live-related-grid{grid-template-columns:1fr}.live-field-grid{grid-template-columns:1fr 1fr}.live-nearby{grid-template-columns:1fr}.live-location-panel{padding:24px}.live-pagination{flex-wrap:wrap}.live-inventory-count{display:none}.live-enquiry .live-field-grid:first-of-type{grid-template-columns:1fr}.live-dialog{width:calc(100% - 24px)}.live-room-details dl{grid-template-columns:1fr}.live-room-details ul{columns:1}.marketplace-page .search-popover{position:absolute;max-width:calc(100vw - 48px)}.marketplace-page .search-field:first-child .search-popover{left:0;right:auto}}
.listing-filter-dialog .dialog-filter-section>div,.listing-filter-dialog .dialog-filter-section>p{clear:both}
.listing-filter-dialog .dialog-filter-section>legend{float:left;padding-top:0;margin-bottom:16px}
.listing-filter-dialog .amenity-choices{width:100%}
/* Amenities by group in the filter dialog (85 amenities in 9 groups since migration 0068). */
.listing-filter-dialog .amenity-group{clear:both;min-width:0;margin:16px 0 0;padding:0;border:0}
.listing-filter-dialog .amenity-group legend{float:none;width:auto;margin:0 0 8px;font:600 13px/1.4 var(--ec-font-heading);color:var(--ec-muted)}
.listing-filter-dialog .filter-dialog-footer .button{border-radius:var(--ec-radius-action)}
.listing-card-link{height:100%;display:flex;flex-direction:column}.listing-card-copy{flex:1;display:flex;flex-direction:column}.listing-card-copy .listing-card-bottom{margin-top:auto}.listing-card-copy .home-amenities{margin-bottom:18px}
.ec-home-card>a{flex:1;min-width:0;display:flex;flex-direction:column}.ec-home-copy{flex:1;display:flex;flex-direction:column}.ec-home-copy .ec-home-price{margin-top:auto}.ec-home-copy .ec-home-amenities{margin-bottom:20px}
.listing-page .search-trigger>.live-chevron{display:none}
/* Shared public/signed-in account navigation across every marketplace page. */
.live-account{position:relative;flex:none}
.live-account-trigger{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:44px;padding:0 14px;border:1px solid var(--ec-control-border);border-radius:var(--ec-radius-pill);background:var(--ec-white);color:var(--ec-plum);font:700 13px var(--ec-font-heading)}
.live-account-trigger.compact{width:44px;padding:0}.live-account-trigger:hover,.live-account-trigger[aria-expanded=true]{background:var(--ec-selected);border-color:var(--ec-plum)}
.live-account-trigger svg{width:18px;height:18px}.live-account-popover{position:absolute;right:0;top:calc(100% + 12px);width:248px;background:var(--ec-white);padding:8px;border:1px solid var(--ec-line);border-radius:var(--ec-radius-panel);box-shadow:var(--ec-shadow-overlay);z-index:var(--ec-z-popover)}
.live-account-popover a,.live-account-popover button,.live-mobile-account a,.live-mobile-account button{display:flex;align-items:center;gap:12px;width:100%;min-height:44px;padding:12px;border:0;border-radius:var(--ec-radius-control);background:transparent;color:var(--ec-plum);font:600 14px var(--ec-font-heading);text-align:left}
.live-account-popover a:hover,.live-account-popover button:hover,.live-mobile-account a:hover,.live-mobile-account button:hover{background:var(--ec-hover)}
.live-account-popover svg,.live-mobile-account svg{width:18px;height:18px;flex:none}.live-account-name{padding:12px;margin:0 0 4px;font:700 13px var(--ec-font-heading);color:var(--ec-muted);border-bottom:1px solid var(--ec-line);overflow-wrap:anywhere}
.live-account-popover .live-error,.live-mobile-account .live-error{padding:12px;line-height:1.6}.live-mobile-account{border-top:1px solid var(--ec-line);padding-top:8px;margin-top:8px}
.live-footer-account a,.live-footer-account button{display:inline-flex;align-items:center;gap:8px;min-height:44px;text-align:left}.live-footer-account button{border:0;background:transparent;padding:0;color:var(--ec-plum);font:inherit;cursor:pointer}.live-footer-account svg{width:16px;height:16px}.live-footer-account button:hover{text-decoration:underline}
@media(max-width:740px){.detail-page .header-actions{display:none}.detail-page .menu-toggle{display:block}.detail-page .nav-wrap>.menu-toggle{grid-column:2;grid-row:1}}
@media(max-width:760px){
 .listing-page .destination-input-wrap,.listing-page .search-trigger{padding-inline:10px}
 .listing-page .clear-destination{display:none}
 .listing-page .destination-field:focus-within .clear-destination{display:flex;position:absolute;right:6px}
 .live-field .ec-input{font-size:16px}
}

/* A listing card opens the home; the property chat is on the home's page only (CL-784). */
.listing-card { display: flex; flex-direction: column; }
.listing-card > .listing-card-link { height: auto; flex: 1; }
.property-detail-chat { margin-top: -4px; }
.property-detail-chat > .ec-btn { width: 100%; }
.property-detail-chat p { margin: 8px 0 0; font-size: 12px; line-height: 1.5; color: var(--ec-muted); }
/* Resident reviews (CL-664): scored categories, report form, show more. */
.live-review-categories{font-size:13px;color:var(--ec-muted)}
.live-review-report{margin-top:8px}
.live-review-report-form{display:grid;gap:14px;margin-top:12px;padding:16px;border:1px solid var(--ec-line);border-radius:var(--ec-radius-card);background:var(--ec-white)}
.live-review-report-form fieldset{display:grid;gap:8px;margin:0;padding:0;border:0}
.live-review-reason{display:flex;align-items:flex-start;gap:10px;min-height:32px;font-size:14px;line-height:1.5;color:var(--ec-ink)}
.live-review-reason input{margin-top:3px;flex:none;accent-color:var(--ec-plum)}
.live-review-report-actions{display:flex;flex-wrap:wrap;gap:8px}
.live-reviews-more{margin-top:20px}

/* Saved homes (CL-663): the heart over a card's photo, outside the card's link so it is its own control. */
.listing-card, .ec-home-card { position: relative; }
.ec-save-home { position: absolute; top: 12px; right: 12px; z-index: 2; }
.ec-save-home button { display: grid; place-items: center; width: 40px; height: 40px; padding: 0; border: 1px solid var(--ec-line); border-radius: var(--ec-radius-pill); background: rgb(255 255 255 / .94); color: var(--ec-plum); box-shadow: var(--ec-shadow-card); cursor: pointer; transition: background var(--ec-duration), transform var(--ec-duration); }
.ec-save-home button:hover { background: var(--ec-white); transform: scale(1.06); }
.ec-save-home button:focus-visible { outline: none; box-shadow: var(--ec-focus); }
.ec-save-home button[aria-pressed='true'] { border-color: var(--ec-plum); }
.ec-save-home svg { width: 20px; height: 20px; }
.live-action-status a { color: var(--ec-plum); font-weight: 700; text-decoration: underline; text-underline-offset: 3px; }

/* Homes near me (CL-666): the first choice in the destination list, set apart from the suggestions. */
.live-near-me { border-bottom: 1px solid var(--ec-line); border-radius: 0; margin-bottom: 6px; padding-bottom: 12px; }
.live-near-me:disabled { opacity: .6; cursor: progress; }

/* Maps (CL-666 search map, CL-667 listing area map; MapLibre with MapTiler tiles). */
.ec-map-frame { position: relative; margin: 0 0 24px; }
.ec-map { width: 100%; height: 460px; overflow: hidden; border: 1px solid var(--ec-line); border-radius: var(--ec-radius-card); background: var(--ec-subtle); }
.ec-area-map .ec-map { height: 280px; }
.ec-map-note { margin-top: 8px; color: var(--ec-muted); font-size: 13px; }
.ec-map-toggle { gap: 8px; }
.ec-map-toggle svg { width: 16px; height: 16px; }
.ec-map-search-area { position: absolute; top: 16px; left: 50%; z-index: 2; transform: translateX(-50%); gap: 8px; box-shadow: var(--ec-shadow-overlay); }
.ec-map-search-area svg { width: 16px; height: 16px; }
.ec-map-price { min-height: 32px; padding: 4px 12px; border: 1px solid var(--ec-plum); border-radius: var(--ec-radius-pill); background: var(--ec-white); color: var(--ec-plum); font: 700 13px/1.2 var(--ec-font-heading); box-shadow: var(--ec-shadow-card); cursor: pointer; white-space: nowrap; }
.ec-map-price:hover, .ec-map-price[aria-expanded='true'] { background: var(--ec-plum); color: var(--ec-white); }
.ec-map-price:focus-visible { outline: none; box-shadow: var(--ec-focus); }
.ec-map-card { display: grid; gap: 4px; font: 400 14px/1.4 var(--ec-font-body); color: var(--ec-ink); }
.ec-map-card a { color: var(--ec-plum); font-weight: 700; text-decoration: underline; text-underline-offset: 3px; }
@media (max-width: 700px) {
  .ec-map { height: 360px; }
  .ec-area-map .ec-map { height: 220px; }
}

/* Campaign banners (CL-624): staff messages on the home, search, city and listing pages (admin, Marketing, Campaigns). */
@keyframes ec-campaign-in { from { opacity: 0; } to { opacity: 1; } }
.ec-campaign { position: relative; display: flex; flex-wrap: wrap; align-items: center; gap: 16px 32px; margin-block: 32px; padding: 24px 72px 24px 28px; border: 1px solid var(--ec-line); border-radius: var(--ec-radius-card); background: var(--ec-cream); color: var(--ec-ink); animation: ec-campaign-in var(--ec-duration) var(--ec-ease); }
.ec-campaign-copy { flex: 1 1 320px; min-width: 0; }
.ec-campaign-eyebrow { margin: 0 0 6px; color: var(--ec-mauve); font: 700 12px/1.4 var(--ec-font-heading); letter-spacing: .08em; text-transform: uppercase; }
.ec-campaign-title { margin: 0; color: var(--ec-plum); font: 800 20px/1.3 var(--ec-font-heading); overflow-wrap: anywhere; }
.ec-campaign-body { margin: 6px 0 0; color: var(--ec-ink); font: 400 15px/1.55 var(--ec-font-body); overflow-wrap: anywhere; }
.ec-campaign-action { flex: none; }
.ec-campaign-hide { position: absolute; top: 10px; right: 10px; display: grid; place-items: center; width: 44px; height: 44px; padding: 0; border: 0; border-radius: var(--ec-radius-pill); background: transparent; color: var(--ec-muted); cursor: pointer; transition: background var(--ec-duration), color var(--ec-duration); }
.ec-campaign-hide:hover { background: var(--ec-hover); color: var(--ec-plum); }
.ec-campaign-hide:focus-visible { outline: none; box-shadow: var(--ec-focus); }
.ec-campaign-hide svg { width: 18px; height: 18px; }
.listing-grid > .ec-campaign { grid-column: 1 / -1; margin-block: 0; }
/* The home page is cream: the banner is set apart in white there. */
.ec-campaign[data-placement='home'] { background: var(--ec-white); }
@media (max-width: 700px) {
  .ec-campaign { padding: 20px; }
  .ec-campaign-copy { padding-right: 40px; }
  .ec-campaign-action { width: 100%; justify-content: center; }
}
/* Report this listing (CL-103), under the stay planner. */
.live-listing-report{margin-top:16px}

/* Saved searches (CL-75): the "Save search" button in the results toolbar, its dialog, and the email choice it shares
   with the /me/saved-searches/ page. */
.ec-save-search { gap: 8px; white-space: nowrap; }
.ec-save-search svg { width: 16px; height: 16px; }
.ec-save-search-dialog { width: min(440px, calc(100vw - 32px)); padding: 24px; border: 0; border-radius: var(--ec-radius-panel); background: var(--ec-white); color: var(--ec-ink); box-shadow: var(--ec-shadow-overlay); }
.ec-save-search-dialog::backdrop { background: color-mix(in srgb, var(--ec-ink) 45%, transparent); }
.ec-save-search-dialog form { display: grid; gap: 18px; margin: 0; }
.ec-save-search-dialog h2 { margin: 0 0 4px; color: var(--ec-plum); font: 700 20px/1.3 var(--ec-font-heading); }
.ec-alert-choices { display: flex; flex-wrap: wrap; gap: 8px; min-width: 0; margin: 0; padding: 0; border: 0; }
.ec-alert-choices legend { float: left; width: 100%; margin: 0 0 4px; padding: 0; color: var(--ec-ink); font: 700 14px/1.5 var(--ec-font-heading); }
.ec-alert-choices label { position: relative; display: inline-flex; align-items: center; min-height: 44px; padding: 0 20px; border: 1px solid var(--ec-field-border); border-radius: var(--ec-radius-pill); background: var(--ec-white); color: var(--ec-ink); font-size: 14px; cursor: pointer; }
.ec-alert-choices input { position: absolute; width: 1px; height: 1px; margin: 0; opacity: 0; }
.ec-alert-choices label:has(input:checked) { border-color: var(--ec-plum); background: var(--ec-selected); color: var(--ec-plum); font-weight: 600; }
.ec-alert-choices label:has(input:focus-visible) { box-shadow: var(--ec-focus); }
.ec-alert-choices:disabled label { opacity: .6; cursor: progress; }
@media (max-width: 700px) {
  .ec-save-search-dialog { padding: 20px; }
}

/* Approved review photos (CL-102): small thumbnails under a review, each opening the full photo. */
.live-review-photos { display: flex; flex-wrap: wrap; gap: 8px; margin: 10px 0 0; padding: 0; list-style: none; }
.live-review-photos a { display: block; overflow: hidden; width: 88px; height: 88px; border-radius: 10px; background: var(--ec-subtle); }
.live-review-photos img { display: block; width: 100%; height: 100%; object-fit: cover; }
.live-review-photos a:focus-visible { outline: none; box-shadow: var(--ec-focus); }

/* Search by move-in date (CL-785): the filter's date field, the result card line and the listing page's "Your dates". */
.move-in-filters .move-in-field { display: grid; clear: both; gap: 8px; max-width: 320px; color: var(--ec-ink); font-size: .875rem; font-weight: 600; }
.move-in-filters .move-in-field input { min-height: 48px; padding: 10px 12px; border: 1px solid var(--ec-field-border); border-radius: var(--ec-radius-control); background: var(--ec-white); color: var(--ec-ink); font: 400 16px/1.4 var(--ec-font-body); }
.move-in-filters .move-in-field input:focus-visible { outline: 2px solid var(--ec-plum); outline-offset: 2px; }
.move-in-filters > p { margin: 8px 0 0; color: var(--ec-muted); font-size: .8125rem; line-height: 1.5; }
.move-in-filters .stay-choices { clear: both; min-width: 0; margin: 20px 0 0; padding: 0; border: 0; }
.move-in-filters .stay-choices legend { margin-bottom: 12px; color: var(--ec-ink); font-size: .875rem; font-weight: 600; }
.ec-browse-card .ec-card-availability { color: var(--ec-ink); }
.ec-your-dates { display: grid; gap: 8px; margin: 0 0 20px; padding: 16px 20px; border: 1px solid var(--ec-line); border-radius: var(--ec-radius-card); background: var(--ec-subtle); }
.ec-your-dates h3 { margin: 0; font-size: 1rem; }
.ec-your-dates p, .ec-your-dates li { margin: 0; color: var(--ec-ink); font-size: .875rem; line-height: 1.6; }
.ec-your-dates ul { display: grid; gap: 4px; margin: 0; padding-left: 18px; }
.ec-your-dates li.is-free strong { color: var(--ec-plum); }
.ec-your-dates .ec-your-dates-note { color: var(--ec-muted); font-size: .8125rem; }

/* Room costs (CL-786): the monthly total and move-in amount under a room's price, and the breakdown in its details. */
.room-costs-summary { display: grid; gap: 4px; margin: 12px 0 0; padding: 12px 0 0; border-top: 1px solid var(--ec-line); }
.room-costs-summary > div { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 2px 12px; }
.room-costs-summary dt { color: var(--ec-muted); font-size: .8125rem; line-height: 1.5; }
.room-costs-summary dd { margin: 0; color: var(--ec-ink); font-size: .8125rem; font-weight: 600; line-height: 1.5; text-align: right; }
.room-costs { display: grid; gap: 14px; margin: 0 0 18px; }
.room-costs-table { width: 100%; border-collapse: collapse; font-size: .875rem; }
.room-costs-table caption { padding-bottom: 6px; color: var(--ec-ink); font-weight: 600; text-align: left; }
.room-costs-table :is(th, td) { padding: 7px 0; border-top: 1px solid var(--ec-line); font-weight: 400; text-align: left; vertical-align: top; }
.room-costs-table td { padding-left: 12px; color: var(--ec-ink); text-align: right; }
.room-costs-table tfoot :is(th, td) { font-weight: 700; }
.room-costs p { margin: 0; color: var(--ec-ink); font-size: .8125rem; line-height: 1.6; }
.room-costs .room-costs-note { color: var(--ec-muted); }

/* Display currency (CL-789): an estimate beside a price in the visitor's chosen currency, and the picker. */
.ec-approx-price { color: var(--ec-muted); font-size: .8125rem; font-weight: 400; white-space: nowrap; }
.ec-display-currency { display: grid; gap: 4px; min-width: 0; }
.ec-display-currency-note { max-width: 320px; margin: 0; color: var(--ec-muted); font-size: .75rem; line-height: 1.5; }
.ec-display-currency-room { margin: 0 0 16px; }
.listing-toolbar > .ec-display-currency { display: grid; grid-template-columns: minmax(0, 1fr); align-items: start; }
.ec-display-currency-field { display: grid; gap: 4px; color: var(--ec-muted); font-size: .8125rem; }
.ec-display-currency-field select { min-height: 44px; max-width: 100%; padding: 8px 12px; border: 1px solid var(--ec-field-border); border-radius: var(--ec-radius-control); background-color: var(--ec-white); color: var(--ec-ink); font: 400 16px/1.3 var(--ec-font-body); }
.ec-display-currency-field select:focus-visible { outline: 2px solid var(--ec-plum); outline-offset: 2px; }
@media (max-width: 590px) {
  .listing-toolbar > .ec-display-currency { flex: 1 0 100%; }
  .listing-toolbar > .ec-display-currency .ec-display-currency-note { max-width: none; }
}
.room-offer-bottom .room-offer-price { display: grid; gap: 2px; }

/* Travel times (CL-788): "Your commute" on a home's page and the travel-time bar above results. */
.ec-commute { display: grid; gap: 12px; margin-top: 24px; padding: 20px; border: 1px solid var(--ec-line); border-radius: var(--ec-radius-card); background: var(--ec-subtle); }
.ec-commute h3 { margin: 0; font-size: 18px; line-height: 1.4; }
.ec-commute-intro { margin: 0; color: var(--ec-ink); font-size: .875rem; line-height: 1.6; }
.ec-commute-field { display: grid; gap: 4px; min-width: 0; color: var(--ec-muted); font-size: .8125rem; }
.ec-commute-field select { min-height: 44px; max-width: 100%; padding: 8px 12px; border: 1px solid var(--ec-field-border); border-radius: var(--ec-radius-control); background-color: var(--ec-white); color: var(--ec-ink); font: 400 16px/1.3 var(--ec-font-body); }
.ec-commute-field select:focus-visible { outline: 2px solid var(--ec-plum); outline-offset: 2px; }
.ec-commute-times { display: grid; margin: 0; }
.ec-commute-times > div { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 2px 12px; padding: 8px 0; border-top: 1px solid var(--ec-line); }
.ec-commute-times dt { color: var(--ec-ink); font-size: .875rem; }
.ec-commute-times dd { margin: 0; color: var(--ec-muted); font-size: .8125rem; text-align: right; font-variant-numeric: tabular-nums; }
.ec-commute-times dd strong { color: var(--ec-ink); font-size: .9375rem; }
.ec-commute-note { margin: 0; color: var(--ec-muted); font-size: .75rem; line-height: 1.6; }
.ec-commute-bar { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 8px 20px; margin: 0 0 20px; padding: 12px 16px; border: 1px solid var(--ec-line); border-radius: var(--ec-radius-card); background: var(--ec-subtle); }
.ec-commute-bar .ec-commute-note { flex: 1 1 280px; max-width: 520px; }
.ec-commute-bar .text-link { min-height: 44px; font-size: .8125rem; }
/* A card's distance or travel-time line, laid out like the place line above it. */
.ec-browse-card p.ec-property-distance { display: flex; align-items: flex-start; gap: 5px; white-space: normal; }
.ec-browse-card p.ec-property-distance svg { width: 15px; height: 15px; flex: none; margin-top: 1px; }

/* Account saved lists (CL-787): the lists down the side, the chosen list, the slip under each home (likes and notes),
   sharing, the people on a list, and the join page for a share link. */
.ec-lists { display: grid; grid-template-columns: 260px minmax(0, 1fr); gap: 32px; align-items: start; }
.ec-list-rail { position: sticky; top: calc(var(--ec-header) + 16px); display: grid; gap: 12px; padding: 12px; border-radius: var(--ec-radius-panel); background: var(--ec-subtle); }
.ec-list-rail ul { display: grid; gap: 4px; margin: 0; padding: 0; list-style: none; }
.ec-list-pick { position: relative; display: grid; gap: 2px; width: 100%; min-height: 56px; padding: 10px 12px 10px 16px; border: 0; border-radius: 12px; background: transparent; color: var(--ec-ink); text-align: left; cursor: pointer; }
.ec-list-pick:hover { background: var(--ec-hover); }
.ec-list-pick[aria-current='true'] { background: var(--ec-white); box-shadow: var(--ec-shadow-card); }
.ec-list-pick[aria-current='true']::before { content: ''; position: absolute; top: 12px; bottom: 12px; left: 0; width: 3px; border-radius: 3px; background: var(--ec-plum); }
.ec-list-pick:focus-visible { outline: none; box-shadow: var(--ec-focus); }
.ec-list-pick-name { color: var(--ec-plum); font: 700 .9375rem/1.4 var(--ec-font-heading); overflow-wrap: anywhere; }
.ec-list-pick-meta { color: var(--ec-muted); font-size: .8125rem; line-height: 1.4; }
.ec-list-new, .ec-list-rename { display: grid; gap: 8px; }
.ec-list-new label, .ec-list-rename label { color: var(--ec-ink); font-size: .875rem; font-weight: 600; }
.ec-list-new input, .ec-list-rename input, .ec-slip-form textarea, .ec-share-made input { box-sizing: border-box; width: 100%; min-height: 44px; padding: 10px 12px; border: 1px solid var(--ec-field-border); border-radius: 12px; background-color: var(--ec-white); color: var(--ec-ink); font: 400 16px/1.4 var(--ec-font-body); }
.ec-list-new input:focus-visible, .ec-list-rename input:focus-visible, .ec-slip-form textarea:focus-visible, .ec-share-made input:focus-visible, .ec-slip-move select:focus-visible { outline: 2px solid var(--ec-plum); outline-offset: 2px; }
.ec-list-new-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.ec-list-new-open { justify-self: start; }
.ec-lists-main { display: grid; gap: 16px; min-width: 0; }
.ec-list { display: grid; gap: 24px; min-width: 0; }
.ec-list-head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 12px 24px; padding-bottom: 16px; border-bottom: 1px solid var(--ec-line); }
.ec-list-title { min-width: 0; }
.ec-list-title h2 { margin: 0; color: var(--ec-plum); font: 800 clamp(1.5rem, 1.2rem + 1vw, 2rem)/1.2 var(--ec-font-heading); letter-spacing: -.02em; overflow-wrap: anywhere; }
.ec-list-title p { max-width: 62ch; margin: 6px 0 0; color: var(--ec-muted); font-size: .9375rem; line-height: 1.6; }
.ec-list-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.ec-list-panel { display: grid; gap: 12px; padding: 20px; border: 1px solid var(--ec-line); border-radius: var(--ec-radius-card); background: var(--ec-white); }
.ec-list-confirm p { margin: 0; color: var(--ec-ink); line-height: 1.6; }
.ec-list-empty h3 { color: var(--ec-plum); font: 700 1.125rem/1.4 var(--ec-font-heading); }
.ec-list-homes { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 24px; margin: 0; padding: 0; list-style: none; }
.ec-list-home { display: flex; flex-direction: column; min-width: 0; }
.ec-list-home .ec-discovery-card { flex: none; }
/* The slip: cream paper tucked under the card, for what the people on the list think of the home. */
.ec-slip { display: grid; gap: 12px; margin: 0 8px; padding: 16px; border-radius: 0 0 var(--ec-radius-card) var(--ec-radius-card); background: var(--ec-cream); }
.ec-slip-votes { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; }
.ec-slip-vote-buttons { display: flex; flex-wrap: wrap; gap: 8px; }
.ec-vote { min-height: 44px; padding: 8px 16px; border: 1px solid var(--ec-control-border); border-radius: var(--ec-radius-pill); background: var(--ec-white); color: var(--ec-plum); font: 600 .875rem/1.2 var(--ec-font-body); cursor: pointer; }
.ec-vote:hover { border-color: var(--ec-plum); }
.ec-vote[aria-pressed='true'] { border-color: var(--ec-plum); background: var(--ec-plum); color: var(--ec-white); }
.ec-vote:focus-visible, .ec-slip-add-note:focus-visible, .ec-slip-remove:focus-visible { outline: none; box-shadow: var(--ec-focus); }
.ec-slip-tally { margin: 0; color: var(--ec-muted); font-size: .8125rem; }
.ec-slip-notes { display: grid; gap: 10px; margin: 0; padding: 0; list-style: none; }
.ec-slip-notes li { display: grid; gap: 2px; padding: 2px 0 2px 12px; border-left: 3px solid var(--ec-lilac); }
.ec-slip-notes p, .ec-slip-mine p { margin: 0; color: var(--ec-ink); font-size: .875rem; line-height: 1.6; overflow-wrap: anywhere; white-space: pre-line; }
.ec-slip-notes span { color: var(--ec-muted); font-size: .75rem; }
.ec-slip-mine { display: grid; gap: 4px; padding: 10px 12px; border-radius: 12px; background: var(--ec-white); }
.ec-slip-mine .ec-slip-mine-meta { color: var(--ec-muted); font-size: .75rem; }
.ec-slip-mine .text-link { font-size: .75rem; font-weight: 600; text-decoration: underline; text-underline-offset: 3px; }
.ec-slip-add-note { justify-self: start; display: inline-flex; align-items: center; gap: 6px; min-height: 44px; padding: 0 4px; border: 0; border-radius: 8px; background: none; color: var(--ec-plum); font: 600 .875rem/1.2 var(--ec-font-body); cursor: pointer; }
.ec-slip-add-note svg { width: 16px; height: 16px; }
.ec-slip-form { display: grid; gap: 8px; }
.ec-slip-form > label:first-child { color: var(--ec-ink); font-size: .8125rem; font-weight: 600; }
.ec-slip-form textarea { min-height: 88px; resize: vertical; }
.ec-slip-share { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; color: var(--ec-ink); font-size: .875rem; }
.ec-slip-share input { width: 18px; height: 18px; margin: 0; accent-color: var(--ec-plum); }
.ec-slip-form-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.ec-slip-foot { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; padding-top: 12px; border-top: 1px solid var(--ec-line); }
.ec-slip-foot .ec-saved-compare { background: var(--ec-white); }
.ec-slip-move select { max-width: 100%; min-height: 44px; padding: 8px 12px; border: 1px solid var(--ec-control-border); border-radius: var(--ec-radius-pill); background-color: var(--ec-white); color: var(--ec-plum); font: 600 .875rem/1.2 var(--ec-font-body); }
.ec-slip-remove { margin-left: auto; min-height: 44px; padding: 0 4px; border: 0; border-radius: 8px; background: none; color: var(--ec-muted); font: 600 .8125rem/1.2 var(--ec-font-body); text-decoration: underline; text-underline-offset: 4px; cursor: pointer; }
.ec-slip-remove:hover { color: var(--ec-danger); }
.ec-slip-added { margin: 0; color: var(--ec-muted); font-size: .75rem; }
.ec-list .ec-saved-gone { margin-top: 0; }
.ec-people { display: grid; gap: 8px; padding-top: 24px; border-top: 1px solid var(--ec-line); }
.ec-people h3, .ec-share h3, .ec-list .ec-saved-gone h3 { margin: 0; color: var(--ec-plum); font: 700 1.125rem/1.4 var(--ec-font-heading); }
.ec-people ul { margin: 0; padding: 0; list-style: none; }
.ec-people li { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 16px; min-height: 52px; padding: 8px 0; border-bottom: 1px solid var(--ec-line); }
.ec-people-name { flex: 1 1 160px; color: var(--ec-ink); font-weight: 600; overflow-wrap: anywhere; }
.ec-people-role { color: var(--ec-muted); font-size: .875rem; }
.ec-people-confirm { flex-basis: 100%; color: var(--ec-ink); font-size: .875rem; line-height: 1.6; }
.ec-people .text-link, .ec-share-links .text-link { min-height: 44px; font-size: .875rem; font-weight: 600; text-decoration: underline; text-underline-offset: 4px; }
.ec-share p { max-width: 62ch; margin: 0; color: var(--ec-ink); font-size: .9375rem; line-height: 1.6; }
.ec-share-role { display: grid; gap: 8px; margin: 0; padding: 0; border: 0; }
.ec-share-role legend { margin-bottom: 8px; padding: 0; color: var(--ec-ink); font-size: .875rem; font-weight: 600; }
.ec-share-role label { display: flex; align-items: flex-start; gap: 10px; padding: 12px 14px; border: 1px solid var(--ec-line); border-radius: 12px; cursor: pointer; }
.ec-share-role label:has(input:checked) { border-color: var(--ec-plum); background: var(--ec-selected); }
.ec-share-role label:has(input:focus-visible) { box-shadow: var(--ec-focus); }
.ec-share-role input { width: 18px; height: 18px; margin: 2px 0 0; accent-color: var(--ec-plum); }
.ec-share-role span { color: var(--ec-ink); font-size: .875rem; line-height: 1.5; }
.ec-share-role strong { display: block; color: var(--ec-plum); }
.ec-share-made { display: grid; gap: 10px; padding: 16px; border-radius: 12px; background: var(--ec-success-soft); }
.ec-share-made label { display: grid; gap: 6px; color: var(--ec-ink); font-size: .8125rem; font-weight: 600; }
.ec-share-made input { font-size: .875rem; }
.ec-share-made-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; color: var(--ec-success); font-size: .875rem; }
.ec-share-made p { font-size: .8125rem; }
.ec-share-links h4 { margin: 4px 0; color: var(--ec-ink); font-size: .875rem; }
.ec-share-links ul { margin: 0; padding: 0; list-style: none; }
.ec-share-links li { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 4px 16px; min-height: 48px; border-bottom: 1px solid var(--ec-line); color: var(--ec-ink); font-size: .875rem; }
.ec-saved-account { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px 24px; margin: 0 0 24px; padding: 16px 20px; border-radius: var(--ec-radius-card); background: var(--ec-cream); }
.ec-saved-account p { max-width: 62ch; margin: 0; color: var(--ec-ink); font-size: .9375rem; line-height: 1.6; }
p.ec-saved-account { display: block; padding: 0; background: none; }
.ec-join { display: grid; gap: 12px; max-width: 560px; padding: 32px; border-radius: var(--ec-radius-panel); background: var(--ec-cream); }
.ec-join-from { margin: 0; color: var(--ec-mauve); font-size: .9375rem; font-weight: 600; }
.ec-join h2 { margin: 0; color: var(--ec-plum); font: 800 clamp(1.5rem, 1.2rem + 1.2vw, 2.25rem)/1.15 var(--ec-font-heading); letter-spacing: -.02em; overflow-wrap: anywhere; }
.ec-join p { margin: 0; color: var(--ec-ink); line-height: 1.6; }
.ec-join-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 20px; margin-top: 8px; }
.ec-join-actions .text-link { min-height: 44px; font-weight: 600; text-decoration: underline; text-underline-offset: 4px; }
@media (max-width: 1000px) {
  .ec-lists { grid-template-columns: minmax(0, 1fr); gap: 20px; }
  .ec-list-rail { position: static; padding: 8px; }
  .ec-list-rail ul { display: flex; gap: 8px; overflow-x: auto; padding-bottom: 4px; scroll-snap-type: x proximity; }
  .ec-list-rail li { flex: 0 0 auto; width: min(240px, 70vw); scroll-snap-align: start; }
}
@media (max-width: 590px) {
  .ec-list-homes { grid-template-columns: minmax(0, 1fr); }
  .ec-join { padding: 24px 20px; }
  .ec-list-actions { width: 100%; }
}

/* Remote-work evidence: operator provenance stays visible beside each room's facts. */
.room-work-evidence{border-top:1px solid var(--ec-line);padding-top:16px;margin-top:16px;display:grid;gap:8px}
.room-work-evidence h4{font-size:15px;color:var(--ec-plum)}
.room-work-evidence p{margin:0;font-size:14px;line-height:1.6}
.room-work-source{color:var(--ec-muted);font-size:12px!important}
.room-work-stale{padding:10px 12px;border-radius:12px;background:var(--ec-subtle);color:var(--ec-plum)}
.room-work-photos{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px}
.room-work-photos a{display:block;border-radius:12px;overflow:hidden}
.room-work-photos img{width:100%;height:140px;object-fit:cover}

/* Viewings (CL-792): "Book a viewing" on a home's page, the time picker, and My viewings. */
.ec-book-viewing { display: grid; gap: 16px; }
.ec-book-viewing h2 { margin: 0; }
.ec-viewing-intro, .ec-viewing-note { margin: 0; color: var(--ec-muted); font-size: .875rem; line-height: 1.6; }
.ec-viewing-picker { display: grid; gap: 14px; }
.ec-viewing-days { display: flex; gap: 8px; overflow-x: auto; padding: 2px 2px 6px; scroll-snap-type: x proximity; }
.ec-viewing-day { flex: 0 0 auto; display: grid; gap: 2px; min-width: 96px; min-height: 56px; padding: 8px 14px; border: 1px solid var(--ec-control-border); border-radius: 14px; background: var(--ec-white); color: var(--ec-ink); text-align: left; cursor: pointer; scroll-snap-align: start; }
.ec-viewing-day strong { color: var(--ec-plum); font: 700 .9375rem/1.3 var(--ec-font-heading); }
.ec-viewing-day span { color: var(--ec-muted); font-size: .75rem; }
.ec-viewing-day:hover, .ec-viewing-time:hover { border-color: var(--ec-plum); }
.ec-viewing-day[aria-pressed='true'] { border-color: var(--ec-plum); background: var(--ec-plum); }
.ec-viewing-day[aria-pressed='true'] strong, .ec-viewing-day[aria-pressed='true'] span { color: var(--ec-white); }
.ec-viewing-times { display: flex; flex-wrap: wrap; gap: 8px; }
.ec-viewing-time { min-width: 76px; min-height: 44px; padding: 8px 14px; border: 1px solid var(--ec-control-border); border-radius: var(--ec-radius-pill); background: var(--ec-white); color: var(--ec-plum); font: 600 .875rem/1.2 var(--ec-font-body); font-variant-numeric: tabular-nums; cursor: pointer; }
.ec-viewing-time[aria-pressed='true'] { border-color: var(--ec-plum); background: var(--ec-selected); box-shadow: inset 0 0 0 1px var(--ec-plum); }
.ec-viewing-mode { color: var(--ec-muted); font-weight: 400; }
.ec-viewing-day:focus-visible, .ec-viewing-time:focus-visible { outline: none; box-shadow: var(--ec-focus); }
.ec-viewing-chosen { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px 20px; padding: 14px 16px; border-radius: var(--ec-radius-card); background: var(--ec-cream); }
.ec-viewing-chosen p { margin: 0; color: var(--ec-ink); font-size: .875rem; line-height: 1.6; }
.ec-viewing-done, .ec-viewing-move { display: grid; gap: 12px; padding: 16px; border-radius: var(--ec-radius-card); background: var(--ec-success-soft); }
.ec-viewing-move { background: var(--ec-cream); }
.ec-viewing-done p, .ec-viewing-move p { margin: 0; color: var(--ec-ink); line-height: 1.6; }
.ec-viewing-done .ec-btn { justify-self: start; }
.ec-viewing-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.ec-viewings-group { display: grid; gap: 12px; margin-top: 24px; }
.ec-viewings-group h2 { margin: 0; color: var(--ec-plum); font: 700 1.125rem/1.4 var(--ec-font-heading); }
.ec-viewings { display: grid; gap: 12px; margin: 0; padding: 0; list-style: none; }
.ec-viewing { display: grid; gap: 10px; padding: 18px 20px; border: 1px solid var(--ec-line); border-radius: var(--ec-radius-card); background: var(--ec-white); }
.ec-viewing-head { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between; gap: 8px 16px; }
.ec-viewing-head h3 { margin: 0; font: 700 1rem/1.4 var(--ec-font-heading); overflow-wrap: anywhere; }
.ec-viewing-head h3 a { color: var(--ec-plum); }
.ec-viewing-when { margin: 4px 0 0; color: var(--ec-ink); font-size: .9375rem; line-height: 1.5; }
.ec-viewing-meta, .ec-viewing-text { margin: 0; color: var(--ec-muted); font-size: .875rem; line-height: 1.6; white-space: pre-line; overflow-wrap: anywhere; }
.ec-viewing-text { color: var(--ec-ink); }
.ec-viewing-meta .text-link { min-height: 44px; font-weight: 600; text-decoration: underline; text-underline-offset: 4px; }
.ec-viewing-status { padding: 4px 10px; border-radius: var(--ec-radius-pill); background: var(--ec-subtle); color: var(--ec-ink); font-size: .8125rem; font-weight: 600; white-space: nowrap; }
.ec-viewing-status.is-requested { background: var(--ec-info-soft); color: var(--ec-info); }
.ec-viewing-status.is-tentative { background: var(--ec-warning-soft); color: var(--ec-warning); }
.ec-viewing-status.is-confirmed { background: var(--ec-success-soft); color: var(--ec-success); }
.ec-viewing-private { display: grid; gap: 4px; padding: 12px 14px; border-radius: 12px; background: var(--ec-cream); }
.ec-viewing-private-title { margin: 0; color: var(--ec-plum); font-size: .8125rem; font-weight: 700; }
.ec-viewing-panel { padding-top: 12px; border-top: 1px solid var(--ec-line); }
.ec-viewing-cancel { display: grid; gap: 8px; }
.ec-viewing-cancel label { color: var(--ec-ink); font-size: .875rem; font-weight: 600; }
.ec-viewing-cancel textarea { box-sizing: border-box; width: 100%; min-height: 64px; padding: 10px 12px; border: 1px solid var(--ec-field-border); border-radius: 12px; background-color: var(--ec-white); color: var(--ec-ink); font: 400 16px/1.4 var(--ec-font-body); resize: vertical; }
.ec-viewing-cancel textarea:focus-visible { outline: 2px solid var(--ec-plum); outline-offset: 2px; }
.ec-viewing-cancelled, .ec-viewing-attended, .ec-viewing-no_show { background: var(--ec-subtle); }

/* Shared spaces (CL-795): a resident's bookings and the spaces of their home; the day and time buttons are the viewing
   picker's. */
.ec-facility-group { display: grid; gap: 12px; margin-top: 24px; }
.ec-facility-group h2 { margin: 0; color: var(--ec-plum); font: 700 1.125rem/1.4 var(--ec-font-heading); }
.ec-facility-list, .ec-facility-bookings { display: grid; gap: 12px; margin: 0; padding: 0; list-style: none; }
.ec-facility { display: grid; gap: 10px; padding: 18px 20px; border: 1px solid var(--ec-line); border-radius: var(--ec-radius-card); background: var(--ec-white); }
.ec-facility-head { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between; gap: 8px 16px; }
.ec-facility-head h3 { margin: 0; color: var(--ec-plum); font: 700 1rem/1.4 var(--ec-font-heading); }
.ec-facility-home, .ec-facility-rules, .ec-facility-text { margin: 0; color: var(--ec-muted); font-size: .875rem; line-height: 1.6; }
.ec-facility-text { color: var(--ec-ink); white-space: pre-line; }
.ec-facility-hours { display: grid; gap: 2px; margin: 0; padding: 0; list-style: none; color: var(--ec-ink); font-size: .875rem; font-variant-numeric: tabular-nums; }
.ec-facility-paused { padding: 4px 10px; border-radius: var(--ec-radius-pill); background: var(--ec-warning-soft); color: var(--ec-warning); font-size: .8125rem; font-weight: 600; }
.ec-facility-picker { display: grid; gap: 12px; padding-top: 12px; border-top: 1px solid var(--ec-line); }
.ec-facility-picker .ec-viewing-day { min-height: 48px; }
.ec-viewing-time:disabled { opacity: .5; cursor: not-allowed; }
.ec-facility-length { display: grid; gap: 4px; color: var(--ec-muted); font-size: .8125rem; }
.ec-facility-length select { min-height: 44px; padding: 8px 12px; border: 1px solid var(--ec-field-border); border-radius: var(--ec-radius-control); background-color: var(--ec-white); color: var(--ec-ink); font: 400 16px/1.3 var(--ec-font-body); }
.ec-facility-booking { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 16px; padding: 14px 16px; border: 1px solid var(--ec-line); border-radius: var(--ec-radius-card); background: var(--ec-white); }
.ec-facility-booking.is-cancelled { background: var(--ec-subtle); }
.ec-facility-booking p { margin: 0; }
.ec-facility-booking-name { color: var(--ec-plum); font-weight: 700; }
.ec-facility-booking-when { color: var(--ec-ink); font-size: .9375rem; line-height: 1.5; }
.ec-facility-booking-meta { color: var(--ec-muted); font-size: .8125rem; line-height: 1.5; }
.ec-facility-actions { display: flex; flex-wrap: wrap; gap: 8px; }

/* Private feedback (CL-807): one question at a time, a 1 to 5 rating and an optional comment. */
.ec-feedback-list { display: grid; gap: 12px; margin: 24px 0 0; padding: 0; list-style: none; }
.ec-feedback-item { display: grid; gap: 8px; padding: 18px 20px; border: 1px solid var(--ec-line); border-radius: var(--ec-radius-card); background: var(--ec-white); }
.ec-feedback-item:not(.is-pending) { background: var(--ec-subtle); }
.ec-feedback-item h2 { margin: 0; color: var(--ec-plum); font: 700 1rem/1.4 var(--ec-font-heading); overflow-wrap: anywhere; }
.ec-feedback-form { display: grid; gap: 10px; }
.ec-feedback-rating { display: flex; flex-wrap: wrap; gap: 8px; margin: 0; padding: 0; border: 0; }
.ec-feedback-rating legend { margin-bottom: 8px; padding: 0; color: var(--ec-ink); font-size: .875rem; font-weight: 600; }
.ec-feedback-score { position: relative; display: inline-flex; }
.ec-feedback-score input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.ec-feedback-score span { display: inline-flex; align-items: baseline; gap: 6px; min-height: 44px; padding: 10px 14px; border: 1px solid var(--ec-control-border); border-radius: var(--ec-radius-pill); background: var(--ec-white); color: var(--ec-ink); font-size: .875rem; cursor: pointer; }
.ec-feedback-score strong { color: var(--ec-plum); }
.ec-feedback-score input:checked + span { border-color: var(--ec-plum); background: var(--ec-plum); color: var(--ec-white); }
.ec-feedback-score input:checked + span strong { color: var(--ec-white); }
.ec-feedback-score input:focus-visible + span { box-shadow: var(--ec-focus); }
.ec-feedback-form > label { color: var(--ec-ink); font-size: .875rem; font-weight: 600; }
.ec-feedback-form textarea { box-sizing: border-box; width: 100%; min-height: 80px; padding: 10px 12px; border: 1px solid var(--ec-field-border); border-radius: 12px; background-color: var(--ec-white); color: var(--ec-ink); font: 400 16px/1.4 var(--ec-font-body); resize: vertical; }
.ec-feedback-form textarea:focus-visible { outline: 2px solid var(--ec-plum); outline-offset: 2px; }
.ec-feedback-answer p { margin: 0; color: var(--ec-ink); line-height: 1.6; white-space: pre-line; }
.ec-feedback-choice { display: grid; gap: 4px; margin-top: 32px; padding-top: 20px; border-top: 1px solid var(--ec-line); }
.ec-feedback-choice h2 { margin: 0; color: var(--ec-plum); font: 700 1.125rem/1.4 var(--ec-font-heading); }

/* The enquiry contract (CL-832, CL-838, CL-840): who receives the enquiry, held or paused businesses, other homes the
   renter can choose, held enquiries on My enquiries and the reply state of an enquiry. */
.ec-enquiry-recipient { display: grid; gap: 4px; padding: 12px 14px; border-radius: 12px; background: var(--ec-subtle); }
.ec-enquiry-recipient p { margin: 0; color: var(--ec-ink); font-size: .875rem; line-height: 1.55; }
.ec-enquiry-recipient .ec-enquiry-response { color: var(--ec-muted); font-size: .8125rem; }
.ec-enquiry-recipient.is-hold, .ec-enquiry-recipient.is-paused { background: var(--ec-warning-soft); }
.ec-enquiry-recipient .ec-enquiry-held-note { color: var(--ec-warning); font-weight: 600; }
.ec-enquiry-held p { margin: 0 0 8px; }
.ec-alternatives { display: grid; gap: 8px; margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--ec-line); }
.ec-alternatives h4 { margin: 0; color: var(--ec-plum); font: 700 .9375rem/1.4 var(--ec-font-heading); }
.ec-alternatives-note { margin: 0; color: var(--ec-muted); font-size: .8125rem; line-height: 1.5; }
.ec-alternatives ul { display: grid; gap: 8px; margin: 0; padding: 0; list-style: none; }
.ec-alternatives li { display: grid; gap: 2px; padding: 10px 12px; border: 1px solid var(--ec-line); border-radius: 12px; background: var(--ec-white); }
.ec-alternatives li a { color: var(--ec-plum); font-weight: 700; text-decoration: underline; text-underline-offset: 3px; overflow-wrap: anywhere; }
.ec-alternatives li span { color: var(--ec-muted); font-size: .8125rem; line-height: 1.5; }
.ec-held { display: grid; gap: 10px; margin: 0 0 24px; padding: 18px 20px; border: 1px solid var(--ec-line); border-radius: var(--ec-radius-card); background: var(--ec-warning-soft); }
.ec-held h2 { margin: 0; color: var(--ec-plum); font: 700 1.125rem/1.4 var(--ec-font-heading); }
.ec-held ul { display: grid; gap: 10px; margin: 0; padding: 0; list-style: none; }
.ec-held-item { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px 16px; padding: 12px 14px; border-radius: 12px; background: var(--ec-white); }
.ec-held-item.is-focus { box-shadow: 0 0 0 2px var(--ec-plum); }
.ec-held-item p { margin: 0; line-height: 1.5; }
.ec-held-home { color: var(--ec-ink); font-weight: 600; }
.ec-held-home a { color: var(--ec-plum); }
.ec-held-state { color: var(--ec-ink); font-size: .875rem; }
.ec-held-words { color: var(--ec-muted); font-size: .8125rem; }
.ec-held-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.ec-enquiry-reply-note { display: grid; gap: 8px; margin: 12px 0; padding: 12px 14px; border-radius: 12px; background: var(--ec-warning-soft); }
.ec-enquiry-reply-note > p { margin: 0; color: var(--ec-ink); font-size: .875rem; line-height: 1.6; }
.ec-enquiry-reply-note .ec-alternatives { border-top-color: var(--ec-line); }
.live-review-evidence { color: var(--ec-muted); font-size: .8125rem; }
/* Report a conversation (MF-TRU02): a quiet link that opens a short form. */
.ec-report-open { justify-self: start; min-height: 44px; margin-top: 8px; padding: 0; border: 0; background: none; color: var(--ec-muted); font: 600 .8125rem/1.3 var(--ec-font-body); text-decoration: underline; text-underline-offset: 4px; cursor: pointer; }
.ec-report-open:hover { color: var(--ec-danger); }
.ec-report-open:focus-visible { outline: none; box-shadow: var(--ec-focus); }
.ec-report { display: grid; gap: 10px; margin-top: 12px; padding: 16px; border: 1px solid var(--ec-line); border-radius: var(--ec-radius-card); background: var(--ec-white); }
.ec-report fieldset { display: grid; gap: 6px; margin: 0; padding: 0; border: 0; }
.ec-report legend, .ec-report > label { margin-bottom: 4px; padding: 0; color: var(--ec-ink); font-size: .875rem; font-weight: 600; }
.ec-report-reason { display: flex; align-items: center; gap: 10px; min-height: 40px; color: var(--ec-ink); font-size: .875rem; }
.ec-report-reason input { width: 18px; height: 18px; margin: 0; accent-color: var(--ec-plum); }
.ec-report textarea { box-sizing: border-box; width: 100%; min-height: 72px; padding: 10px 12px; border: 1px solid var(--ec-field-border); border-radius: 12px; background-color: var(--ec-white); color: var(--ec-ink); font: 400 16px/1.4 var(--ec-font-body); resize: vertical; }
.ec-report-actions { display: flex; flex-wrap: wrap; gap: 8px; }
/* What Easycoliv knows about a business (CL-831): one checked fact a line, never one blanket badge. */
.ec-trust-facts { display: grid; gap: 4px; margin: 8px 0 12px; padding: 0; list-style: none; }
.ec-trust-facts li { position: relative; padding-left: 16px; color: var(--ec-ink); font-size: .875rem; line-height: 1.5; }
.ec-trust-facts li::before { content: ''; position: absolute; top: .6em; left: 2px; width: 6px; height: 6px; border-radius: 50%; background: var(--ec-mauve); }
/* An empty search (CL-829): save it, or choose a city with homes now; never rooms presented as available. */
.ec-empty-save { margin: 12px 0 0; color: var(--ec-muted); font-size: .875rem; }
.ec-empty-cities { margin-top: 16px; }
.ec-empty-cities h4 { margin: 0 0 8px; color: var(--ec-plum); font: 700 .9375rem/1.4 var(--ec-font-heading); }
.ec-empty-cities ul { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; margin: 0; padding: 0; list-style: none; }
.ec-empty-cities li { display: inline-flex; align-items: baseline; gap: 6px; padding: 8px 14px; border: 1px solid var(--ec-line); border-radius: var(--ec-radius-pill); background: var(--ec-white); font-size: .875rem; }
.ec-empty-cities li a { color: var(--ec-plum); font-weight: 600; }
.ec-empty-cities li span { color: var(--ec-muted); font-size: .8125rem; }
