#detail-dialog { box-sizing:border-box; width:min(1040px,96vw); max-height:92dvh; padding:24px; }
.listing-image:where(button) { border:0; padding:0; cursor:pointer; }
#detail-dialog .dialog-head { align-items:flex-start; gap:12px; }
#detail-dialog #close-detail { min-width:44px; min-height:44px; }
.sr-only { position:absolute; width:1px; height:1px; margin:-1px; padding:0; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0; }
#detail-dialog .dialog-head h2 { margin-bottom:8px; }
.detail-steps { display:flex; flex-wrap:wrap; gap:6px; margin:10px 0 18px; }
.detail-steps button { min-height:44px; padding:8px 12px; border:1px solid var(--line); border-radius:var(--radius-sm); background:var(--accent-soft); color:var(--ink); font:600 12px "Libre Franklin", sans-serif; cursor:pointer; }
.detail-steps button:hover { border-color:var(--accent); }
.detail-steps button:focus-visible { outline:3px solid var(--accent); outline-offset:2px; }
#detail-dialog .detail-body { grid-template-columns:minmax(0,1.12fr) minmax(0,1fr); gap:26px; }
#detail-dialog .detail-info { display:flex; flex-direction:column; gap:12px; }
#detail-dialog .detail-info > * { margin-block:0; }
#detail-dialog .detail-info .price { font-size:25px; }
#detail-dialog .detail-info .facts { display:block; }
#detail-dialog .detail-info .commutes, #detail-dialog .detail-info .actions { display:flex; flex-wrap:wrap; gap:8px; }
#detail-dialog .detail-info .actions > * { min-height:44px; }
#detail-dialog button:focus-visible, #lightbox button:focus-visible, #detail-dialog a:focus-visible { outline:3px solid var(--accent); outline-offset:3px; }
.detail-gallery { min-width:0; align-self:start; }
.gallery-stage { position:relative; overflow:hidden; border-radius:var(--radius-md); background:var(--accent-soft); }
.gallery-open { display:block; width:100%; aspect-ratio:4/3; border:0; padding:0; background:transparent; cursor:zoom-in; }
.gallery-open img { display:block; width:100%; height:100%; object-fit:contain; }
.gallery-fallback { display:grid; place-items:center; height:100%; min-height:120px; color:var(--muted); font-size:13px; }
.gallery-nav { position:absolute; top:50%; transform:translateY(-50%); width:44px; height:50px; border:0; border-radius:var(--radius-sm); color:#fff; background:rgba(0,0,0,.65); font-size:32px; cursor:pointer; }
.gallery-prev { left:8px; } .gallery-next { right:8px; }
.gallery-count { margin:8px 0; color:var(--muted); font-size:12px; }
.gallery-thumbs { display:flex; gap:7px; padding:2px 2px 9px; overflow-x:auto; scroll-snap-type:x mandatory; }
.gallery-thumbs button { flex:0 0 72px; width:72px; height:60px; overflow:hidden; padding:0; border:2px solid transparent; border-radius:var(--radius-sm); background:var(--accent-soft); cursor:pointer; scroll-snap-align:start; }
.gallery-thumbs button[aria-current="true"] { border-color:var(--accent); }
.gallery-thumbs img { width:100%; height:100%; object-fit:cover; }
.gallery-thumbs .gallery-fallback { min-height:0; font-size:10px; }
.detail-section { padding-top:14px; border-top:1px solid var(--line); }
.detail-section h3 { margin:0 0 9px; font-size:16px; }
.detail-section p { margin:0 0 7px; line-height:1.5; }
.detail-prose { white-space:pre-line; max-width:70ch; line-height:1.65; overflow-wrap:anywhere; }
.detail-fetch-status, .detail-source p, .detail-map-precision { color:var(--muted); font-size:12px; }
.detail-source a { display:inline-block; min-height:44px; line-height:44px; font-weight:700; }
.detail-fact-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px 16px; margin:0; }
.detail-fact { padding-bottom:7px; border-bottom:1px solid var(--line); min-width:0; }
.detail-fact dt { color:var(--muted); font-size:11px; }
.detail-fact dd { margin:3px 0 0; font-size:14px; overflow-wrap:anywhere; }
.detail-map-canvas { width:100%; height:210px; border-radius:var(--radius-sm); background:var(--accent-soft); }
.contract-table-scroll { max-width:100%; overflow-x:auto; }
.contract-table-scroll:focus-visible { outline:3px solid var(--accent); outline-offset:3px; }
#lightbox { box-sizing:border-box; width:min(100vw,1400px); max-width:100vw; height:min(100dvh,1000px); max-height:100dvh; padding:16px; background:#111; color:#fff; }
#lightbox figure { display:flex; flex-direction:column; align-items:center; justify-content:center; height:100%; margin:0 48px; }
#lightbox img { display:block; max-width:100%; max-height:calc(100% - 36px); object-fit:contain; }
#lightbox figcaption { margin-top:8px; }
#lightbox button { position:absolute; z-index:1; min-width:44px; min-height:44px; border:0; border-radius:var(--radius-sm); background:rgba(255,255,255,.14); color:#fff; cursor:pointer; font-size:30px; }
#lightbox .lb-close { top:12px; right:12px; } #lightbox .lb-nav { top:50%; transform:translateY(-50%); }
#lightbox .lb-prev { left:8px; } #lightbox .lb-next { right:8px; }
@media (max-width:700px) {
  #detail-dialog { width:100vw; max-width:100vw; height:100dvh; max-height:100dvh; padding:16px; border-radius:0; }
  #detail-dialog .detail-body { display:block; }
  #detail-dialog .detail-info { margin-top:18px; }
  .detail-steps { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); }
  .detail-steps button { min-width:0; text-align:left; }
  .contract-table-scroll { overflow:visible; }
  .contract-table-scroll table, .contract-table-scroll tbody, .contract-table-scroll tr, .contract-table-scroll td, .contract-table-scroll th { display:block; width:100%; }
  .contract-table-scroll thead { position:absolute; width:1px; height:1px; margin:-1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }
  .contract-table-scroll tr { margin:10px 0; padding:10px; border:1px solid var(--line); border-radius:var(--radius-sm); }
  .contract-table-scroll th, .contract-table-scroll td { padding:5px 0; overflow-wrap:anywhere; }
  .contract-table-scroll td::before { content:attr(data-label); display:block; color:var(--muted); font-size:11px; font-weight:600; }
  .gallery-thumbs button { flex-basis:58px; width:58px; height:52px; }
  #lightbox { padding:8px; } #lightbox figure { margin:0 36px; }
}
