/*
 * CEMI Public Collections System — SP-R2
 * Canonical authority for reusable facts, property grids, cards and list variants.
 * Consumers: Single Property, Home, catalog, suggestions/related properties.
 */
.cemi-fact-grid {
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(min(var(--cemi-fact-min-width),100%),1fr));
  gap:var(--cemi-collection-gap);
}
.cemi-fact-grid > div {
  display:grid;
  align-content:center;
  min-width:0;
  min-height:92px;
  padding:var(--cemi-card-padding);
  border:1px solid var(--cemi-visitor-border);
  border-radius:var(--cemi-visitor-radius);
  background:var(--cemi-visitor-card-bg);
}
.cemi-fact-grid strong { display:block; font-size:clamp(18px,1.45vw,23px); line-height:1.15; }
.cemi-fact-grid span { margin-top:6px; color:var(--cemi-visitor-color-muted); font-size:14px; }

.cemi-property-grid {
  display:grid;
  grid-template-columns:repeat(var(--cemi-grid-columns,3),minmax(0,1fr));
  gap:var(--cemi-grid-gap,var(--cemi-collection-gap));
  align-items:stretch;
}
.cemi-property-grid > [role="listitem"] { min-width:0; height:100%; }
.cemi-property-grid--1{--cemi-grid-columns:1}
.cemi-property-grid--2{--cemi-grid-columns:2}
.cemi-property-grid--3{--cemi-grid-columns:3}
.cemi-property-grid--4{--cemi-grid-columns:4}

.cemi-property-card {
  height:100%;
  min-width:0;
  overflow:hidden;
  border:1px solid var(--cemi-visitor-border);
  border-radius:var(--cemi-visitor-radius);
  background:var(--cemi-visitor-card-bg);
}
.cemi-property-card__media { position:relative;display:block;aspect-ratio:4/3;color:var(--cemi-visitor-color-secondary);background:var(--cemi-visitor-color-primary);text-decoration:none; }
.cemi-property-card__media img { width:100%;height:100%;object-fit:cover; }
.cemi-property-card__media > span:not(.cemi-property-card__operation){display:grid;height:100%;place-items:center;padding:14px;text-align:center}
.cemi-property-card__operation { position:absolute;top:10px;left:10px;padding:5px 7px;border-radius:var(--cemi-visitor-radius);background:var(--cemi-visitor-color-accent);font-size:11px;font-weight:800; }
.cemi-property-card__body { padding:var(--cemi-card-padding); }
.cemi-property-card--density-compact .cemi-property-card__body { padding:var(--cemi-card-padding-compact); }
.cemi-property-card__meta { display:flex;align-items:flex-start;justify-content:space-between;gap:10px;color:var(--cemi-visitor-color-muted);font-size:12px; }
.cemi-property-card__meta > * { min-width:0; overflow-wrap:anywhere; }
.cemi-property-card h3 { margin:10px 0;font-size:clamp(17px,1.25vw,20px);line-height:1.16; }
.cemi-property-card h3 a { color:var(--cemi-visitor-color-text);text-decoration:none; }
.cemi-property-card__price { display:block;margin-bottom:12px;line-height:1.25; }
.cemi-property-card__features { display:grid;grid-template-columns:repeat(auto-fit,minmax(58px,1fr));gap:8px;padding-top:12px;border-top:1px solid var(--cemi-visitor-border); }
.cemi-property-card__features span { display:grid;min-width:0;font-size:12px; }
.cemi-property-card__features small { overflow-wrap:anywhere; }
.cemi-property-card--compact .cemi-property-card__features,
.cemi-property-card--minimal .cemi-property-card__features { display:none; }
.cemi-property-card--featured { box-shadow:var(--cemi-visitor-shadow); }
.cemi-property-card--horizontal,
.cemi-property-card--list { display:grid;grid-template-columns:minmax(190px,36%) minmax(0,1fr); }
.cemi-property-card--horizontal .cemi-property-card__media,
.cemi-property-card--list .cemi-property-card__media { aspect-ratio:16/10; }
.cemi-empty-state { padding:var(--cemi-visitor-space-8);border:1px dashed var(--cemi-visitor-border);border-radius:var(--cemi-visitor-radius);text-align:center; }

/* Generic reusable collection helpers. */
.cemi-collection-grid { display:grid;grid-template-columns:repeat(auto-fit,minmax(min(var(--cemi-collection-min,240px),100%),1fr));gap:var(--cemi-collection-gap); }
.cemi-collection-list { display:grid;gap:var(--cemi-collection-gap); }
.cemi-collection-list > * { min-width:0; }

@media (max-width:1199px) {
  .cemi-property-grid[style*="--cemi-grid-columns:4"],
  .cemi-property-grid--4 { grid-template-columns:repeat(3,minmax(0,1fr)); }
}
@media (max-width:1023px) {
  .cemi-property-grid[style*="--cemi-grid-columns:3"],
  .cemi-property-grid[style*="--cemi-grid-columns:4"],
  .cemi-property-grid--3,
  .cemi-property-grid--4 { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:767px) {
  .cemi-fact-grid { grid-template-columns:repeat(2,minmax(0,1fr));gap:10px; }
  .cemi-fact-grid > div { min-height:76px;padding:12px 13px; }
  .cemi-fact-grid strong { font-size:18px; }
  .cemi-fact-grid span { margin-top:4px;font-size:12px; }
  .cemi-property-grid { grid-template-columns:1fr;gap:12px; }
  .cemi-property-card__body { padding:14px; }
  .cemi-property-card--horizontal,
  .cemi-property-card--list { grid-template-columns:minmax(118px,34%) minmax(0,1fr); }
  .cemi-property-card--horizontal .cemi-property-card__media,
  .cemi-property-card--list .cemi-property-card__media { aspect-ratio:auto;min-height:100%; }
}
@media (max-width:359px) {
  .cemi-fact-grid { grid-template-columns:1fr; }
  .cemi-property-card--horizontal,
  .cemi-property-card--list { grid-template-columns:1fr; }
}

/* V2B — neutral public media fallback. Internal capture terminology never leaks to visitors. */
.cemi-property-card__media-fallback {
  display:grid;
  place-items:center;
  width:100%;
  height:100%;
  min-height:100%;
  background:linear-gradient(145deg,var(--cemi-visitor-color-primary),#15283a);
}
.cemi-property-card__media-fallback b {
  font-size:clamp(18px,2vw,28px);
  letter-spacing:.14em;
  opacity:.72;
}
