/* DS3 housing presentation. Data, financial calculations and scene materials
   remain owned by the original housing controllers and renderers. */
html.gw-ds3 .ds3-housing :is(h1,h2,h3) {
  font-family:var(--gw-font); font-weight:750; letter-spacing:-.035em;
}
html.gw-ds3 .ds3-housing { --ds3-housing-line:var(--gw-rule); --ds3-housing-soft:var(--gw-card); }
html.gw-ds3 .ds3-housing :is(input,select,textarea) { font-size:16px; }
html.gw-ds3 .ds3-housing :is(a,button,input,select,summary):focus-visible {
  outline:2px solid var(--gw-action); outline-offset:4px;
}
html.gw-ds3 .ds3-housing [hidden] { display:none!important; }
html.gw-ds3 .ds3-housing :is(.primary-button,.secondary-button,.icon-button) { border-radius:8px; }
html.gw-ds3 .ds3-housing .primary-button { min-height:48px; }
html.gw-ds3 .ds3-housing :is(.directory-hero,.profile-heading,.pd-hero) h1 {
  font-size:clamp(32px,3.1vw,48px); font-weight:780; line-height:1.1;
}
html.gw-ds3 .ds3-housing .section-path { letter-spacing:0; text-transform:none; }

/* Keep the real filters and their URL-backed values; compact only their frame. */
html.gw-ds3 .ds3-housing.housing-directory .directory-hero {
  align-items:center; gap:16px 32px; padding-block:20px 18px;
}
html.gw-ds3 .ds3-housing.housing-directory .directory-hero h1 { margin-bottom:10px; }
html.gw-ds3 .ds3-housing.housing-directory .hf-map-preview img {
  height:72px; object-fit:contain; border-radius:8px; background:var(--gw-card);
}
html.gw-ds3 .ds3-housing.housing-directory .directory-evidence-notes { margin-block:12px 16px; }
html.gw-ds3 .ds3-housing.housing-directory .results-toolbar { padding-bottom:12px; }
html.gw-ds3 .ds3-housing.housing-directory .explorer-controls {
  padding:16px 0; border-color:var(--ds3-housing-line); background:var(--gw-paper);
}
html.gw-ds3 .ds3-housing.housing-directory #filters {
  border:1px solid var(--ds3-housing-line); border-radius:36px; gap:0;
  padding:8px 12px; box-shadow:0 3px 12px color-mix(in srgb,var(--gw-ink) 7%,transparent);
}
html.gw-ds3 .ds3-housing.housing-directory #filters>label {
  min-width:0; padding:4px 16px; border:0;
}
html.gw-ds3 .ds3-housing.housing-directory #filters>label+label { border-left:1px solid var(--gw-rule); }
html.gw-ds3 .ds3-housing.housing-directory #filters>label>span {
  margin:0 0 3px; font-size:12px; font-weight:700; color:var(--gw-ink);
}
html.gw-ds3 .ds3-housing.housing-directory #filters :is(input,select) {
  min-height:36px; padding-block:3px; background:transparent; border:0; box-shadow:none;
}
html.gw-ds3 .ds3-housing.housing-directory .filter-tools { gap:8px 16px; }
html.gw-ds3 .ds3-housing.housing-directory .filter-tools>button {
  min-height:44px; padding:6px 14px; border:1px solid var(--ds3-housing-line); border-radius:24px;
}
html.gw-ds3 .ds3-housing.housing-directory .active-filters button {
  min-height:44px; padding:8px 14px; border-radius:24px;
}
html.gw-ds3 .ds3-housing.housing-directory .results-toolbar { border-color:var(--gw-rule); }
html.gw-ds3 .ds3-housing.housing-directory #results {
  display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); align-items:start; gap:32px 24px;
  padding-block:24px;
}
html.gw-ds3 .ds3-housing.housing-directory #results:has(.all-plans-wrap),
html.gw-ds3 .ds3-housing.housing-directory #results:has(.empty-state) { display:block; }
html.gw-ds3 .ds3-housing.housing-directory #results>.property-row {
  display:flex; flex-direction:column; gap:0; min-width:0; margin:0; padding:0 0 16px;
  background:var(--gw-paper); border:0; border-bottom:1px solid var(--gw-rule); border-radius:0;
}
html.gw-ds3 .ds3-housing.housing-directory .property-row::before { display:none; }
html.gw-ds3 .ds3-housing.housing-directory .browse-result-main { display:block; }
html.gw-ds3 .ds3-housing.housing-directory .browse-result-name h3,
html.gw-ds3 .ds3-housing.housing-directory .row-description h3 {
  margin:16px 0 6px; font-size:19px; font-weight:750; line-height:1.25; letter-spacing:-.025em;
}
html.gw-ds3 .ds3-housing.housing-directory .browse-result-rate { text-align:left; margin-top:12px; }
html.gw-ds3 .ds3-housing.housing-directory .browse-result-rate>strong,
html.gw-ds3 .ds3-housing.housing-directory .row-price strong {
  margin:3px 0; font-size:24px; font-weight:750; line-height:1.2; letter-spacing:-.025em;
}
html.gw-ds3 .ds3-housing.housing-directory :is(.listing-kicker,.listing-tags,.listing-basis,.browse-result-rate>small,.browse-budget,.price-observation) {
  font-size:13px; line-height:1.5;
}
html.gw-ds3 .ds3-housing.housing-directory .listing-kicker { padding-top:12px; }
html.gw-ds3 .ds3-housing.housing-directory .listing-tags { gap:4px 10px; }
html.gw-ds3 .ds3-housing.housing-directory .browse-result-actions {
  display:flex; flex-wrap:wrap; align-items:center; gap:4px 14px; margin-top:10px; font-size:13px;
}
html.gw-ds3 .ds3-housing.housing-directory .browse-result-actions>a {
  font-size:13px; min-height:44px; margin-right:0;
}
html.gw-ds3 .ds3-housing.housing-directory .browse-result-actions .save-button {
  min-height:44px; font-size:13px; margin-left:auto;
}
html.gw-ds3 .ds3-housing.housing-directory .browse-result-actions label { min-height:44px; font-size:13px; }
html.gw-ds3 .ds3-housing.housing-directory .browse-result-details {
  margin-top:8px; border-top:1px solid var(--gw-rule); width:100%;
}
html.gw-ds3 .ds3-housing.housing-directory .browse-result-details>summary { font-size:13px; min-height:44px; }
html.gw-ds3 .ds3-housing.housing-directory .browse-result-details[open] { grid-column:auto; }
html.gw-ds3 .ds3-housing.housing-directory .more-properties { grid-column:1/-1; text-align:center; padding:24px; }
html.gw-ds3 .ds3-housing .ds3-card-media,
html.gw-ds3 .ds3-housing .ds3-property-cover {
  position:relative; display:block; width:100%; margin:0; overflow:hidden;
  background:var(--ds3-housing-soft); border-radius:12px;
}
html.gw-ds3 .ds3-housing .ds3-card-media { aspect-ratio:1.2; }
html.gw-ds3 .ds3-housing .ds3-card-media img,
html.gw-ds3 .ds3-housing .ds3-property-cover img {
  display:block; width:100%; height:100%; object-fit:contain; padding:12px;
}
html.gw-ds3 .ds3-housing .ds3-card-media span,
html.gw-ds3 .ds3-housing .ds3-property-cover figcaption {
  position:absolute; bottom:12px; left:12px; max-width:calc(100% - 24px);
  margin:0; padding:6px 9px; color:var(--gw-ink); background:color-mix(in srgb,var(--gw-paper) 94%,transparent);
  border-radius:6px; font-size:11px; line-height:1.35;
}
html.gw-ds3 .ds3-housing .ds3-card-media:hover img { opacity:.92; }
html.gw-ds3 .ds3-housing .ds3-media-photo img { object-fit:cover; padding:0; }
html.gw-ds3 .ds3-housing .ds3-property-cover { aspect-ratio:2.5; margin-block:20px 32px; }
html.gw-ds3 .ds3-housing .ds3-property-cover>a { display:block; height:100%; }

/* The existing detail controller keeps selected-room prices and sources live. */
html.gw-ds3 .ds3-housing.property-detail .pd-hero {
  grid-template-columns:minmax(0,1.6fr) minmax(300px,1fr); gap:28px 48px;
}
html.gw-ds3 .ds3-housing.property-detail .pd-hero>.ds3-property-cover {
  grid-column:1/-1; grid-row:2; margin:0;
}
html.gw-ds3 .ds3-housing.property-detail .pd-hero>.profile-heading { grid-column:1/-1; grid-row:1; }
html.gw-ds3 .ds3-housing.property-detail .pd-hero:has(>.ds3-property-cover)>.pd-about { grid-column:1; grid-row:3; }
html.gw-ds3 .ds3-housing.property-detail .pd-hero:has(>.ds3-property-cover)>.pd-offer { grid-column:2; grid-row:3; }
html.gw-ds3 .ds3-housing.property-detail .pd-offer {
  border:1px solid var(--ds3-housing-line); border-radius:12px; padding:24px;
  box-shadow:0 6px 20px color-mix(in srgb,var(--gw-ink) 10%,transparent); background:var(--gw-paper);
}
html.gw-ds3 .ds3-housing.property-detail .pd-offer .pd-price strong { font-size:32px; font-weight:750; }
html.gw-ds3 .ds3-housing.property-detail .pd-highlights { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px 32px; }
html.gw-ds3 .ds3-housing.property-detail .pd-place-media { overflow:hidden; border-radius:12px; }
html.gw-ds3 .ds3-housing.property-detail .pd-place-media img { display:block; width:100%; object-fit:cover; }
html.gw-ds3 .ds3-housing.property-detail .pd-mobile-bar { background:var(--gw-paper); border-color:var(--ds3-housing-line); }
html.gw-ds3 .ds3-housing.property-detail .pd-mobile-price strong { font-weight:750; }
html.gw-ds3 .ds3-housing :is(.comparison-table-wrap,.plan-table-wrap,.all-plans-wrap) { border-radius:12px; }
html.gw-ds3 .ds3-housing :is(.decision-card,.decision-option,.budget-panel) { border-radius:12px; }

@media(max-width:1100px) {
  html.gw-ds3 .ds3-housing.housing-directory #results { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media(max-width:760px) {
  html.gw-ds3 .ds3-housing.housing-directory #results { grid-template-columns:minmax(0,1fr); gap:28px; }
  html.gw-ds3 .ds3-housing.housing-directory .directory-hero { grid-template-columns:minmax(0,1fr); gap:16px; padding-block:8px 12px; }
  html.gw-ds3 .ds3-housing.housing-directory .hf-map-preview { display:none; }
  html.gw-ds3 .ds3-housing.housing-directory #filters { border-radius:16px; padding:8px 4px; gap:10px; }
  html.gw-ds3 .ds3-housing.housing-directory #filters>label { padding:4px 10px; }
  html.gw-ds3 .ds3-housing.housing-directory #filters>label+label { border-left:0; }
  html.gw-ds3 .ds3-housing.housing-directory .filter-tools { gap:8px; }
  html.gw-ds3 .ds3-housing.housing-directory .filter-tools>button { padding-inline:12px; }
  html.gw-ds3 .ds3-housing .ds3-property-cover { aspect-ratio:1.3; margin-block:16px 24px; }
  html.gw-ds3 .ds3-housing.property-detail .pd-hero { display:flex; flex-direction:column; gap:24px; }
  html.gw-ds3 .ds3-housing.property-detail .pd-hero>.ds3-property-cover { order:1; }
  html.gw-ds3 .ds3-housing.property-detail .pd-hero>.profile-heading { order:0; }
  html.gw-ds3 .ds3-housing.property-detail .pd-hero>.pd-offer { order:2; width:100%; box-shadow:none; }
  html.gw-ds3 .ds3-housing.property-detail .pd-hero>.pd-about { order:3; width:100%; }
  html.gw-ds3 .ds3-housing.property-detail .pd-highlights { grid-template-columns:minmax(0,1fr); }
}
@media print {
  html.gw-ds3 .ds3-housing.housing-directory #results { display:block; }
  html.gw-ds3 .ds3-housing.housing-directory #results>.property-row { break-inside:avoid; }
  html.gw-ds3 .ds3-housing .ds3-card-media { display:none; }
  html.gw-ds3 .ds3-housing.property-detail .pd-offer { position:static; box-shadow:none; }
}
