/* LocaDate shared public cards — homepage reference, 2026-09-22.
   This file is loaded after style.css. Only ld-* listing components opt in. */
:root{
  --ld-card-photo-height:228px;
  --ld-card-body-height:112px;
  --ld-card-gap:12px;
  --ld-top-height:320px;
}
main.wrap.ld-listing-page{max-width:1180px;padding:18px 14px 30px;}
.grid.ld-card-grid{
  display:grid !important;grid-template-columns:repeat(5,minmax(0,1fr)) !important;
  gap:var(--ld-card-gap) !important;align-items:stretch;margin-top:10px;
}
.card.ad-card.ld-ad-card{
  position:relative;min-width:0;width:100%;max-width:100%;margin:0;
  border:1px solid var(--line,#e5e7eb);border-radius:16px !important;
  overflow:hidden;background:#fff;box-shadow:0 4px 12px rgba(15,23,42,.06);
}
.card.ad-card.ld-ad-card--vip{border-color:#e5d5aa;}
.card.ad-card.ld-ad-card > .ld-card-link{display:block;position:relative;color:inherit;}
.card.ad-card.ld-ad-card .img{
  position:relative;overflow:hidden;height:var(--ld-card-photo-height) !important;
  min-height:0 !important;padding:0;background:#d7d1c9;
  display:flex;align-items:center;justify-content:center;
}
.card.ad-card.ld-ad-card .img img{
  display:block;width:100%;height:100%;max-width:100%;max-height:100%;min-width:0;
  border-radius:0;background:transparent !important;
  transform:none !important;filter:none !important;transition:none !important;
}
.card.ad-card.ld-ad-card .ld-card-photo{
  position:relative;z-index:1;object-fit:contain !important;object-position:center !important;
}
.card.ad-card.ld-ad-card .ld-card-soft-bg{
  position:absolute;inset:0;z-index:0;object-fit:cover !important;object-position:center !important;
  pointer-events:none;color:transparent;font-size:0;
}
.card.ad-card.ld-ad-card .ld-card-no-photo{font-size:12px;color:#475467;}
.card.ad-card.ld-ad-card .body{
  height:var(--ld-card-body-height);min-height:0 !important;padding:9px !important;
  display:flex;flex-direction:column;overflow:hidden;
}
.card.ad-card.ld-ad-card .meta-row{flex-wrap:nowrap;gap:4px;margin:0 0 5px;}
.card.ad-card.ld-ad-card .meta-row .badge{
  display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.card.ad-card.ld-ad-card .badge,.card.ad-card.ld-ad-card .age-pill{padding:4px 5px !important;font-size:9px !important;}
.card.ad-card.ld-ad-card .age-pill{flex-shrink:0;white-space:nowrap;}
.card.ad-card.ld-ad-card h3{
  margin:0 0 4px !important;font-size:13px !important;line-height:1.2 !important;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.card.ad-card.ld-ad-card p{
  margin:0;font-size:10px !important;line-height:1.3 !important;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.card.ad-card.ld-ad-card .card-actions{flex-wrap:nowrap;gap:3px !important;padding-top:5px !important;margin-top:auto !important;}
.card.ad-card.ld-ad-card .card-actions span{padding:4px 5px !important;font-size:8px !important;}
.vip-badge.topvip{background:linear-gradient(135deg,#f7d56a,#c89b2e);color:#111;font-weight:900;}
.vip-badge.vip{background:#111827;color:#fff;font-weight:900;}
.card.ad-card.ld-ad-card .vip-badge{left:7px !important;top:7px !important;padding:4px 6px !important;font-size:9px !important;}
.card.ad-card.ld-ad-card .verified-badge{
  top:35px !important;left:7px !important;right:auto !important;
  padding:4px 6px !important;font-size:9px !important;background:#17834b !important;color:#fff !important;
  width:auto;max-width:max-content;min-width:0;white-space:nowrap;
}
.card.ad-card.ld-ad-card .new-badge{
  top:7px !important;right:7px !important;bottom:auto !important;left:auto !important;
  padding:4px 5px;font-size:8px;transform:none;
}
.card.ad-card.ld-ad-card .card-save-btn{
  top:38px !important;right:8px !important;width:32px;min-width:32px;height:30px;
  padding:0;background:rgba(17,24,39,.82) !important;
}
.card.ad-card.ld-ad-card:not(:has(.new-badge)) .card-save-btn{top:8px !important;}
.card.ad-card.ld-ad-card .card-save-btn.is-active{background:#fff1f2 !important;color:#be123c;}
.card.ad-card.ld-ad-card .ld-card-favorite-form{margin:0;padding:0;}
.card.ad-card.ld-ad-card :is(.body,.badge,.age-pill,.vip-badge,.verified-badge,.new-badge,.card-save-btn){
  -webkit-backdrop-filter:none !important;backdrop-filter:none !important;
}
.card.ad-card.ld-ad-card .online-dot::after{display:none !important;animation:none !important;}

/* TOP VIP retains its gold frame, photo overlay and white copy everywhere. */
.card.ad-card.ld-ad-card--top{
  height:var(--ld-top-height) !important;border:2px solid #c89b2e !important;
  background:#111827;box-shadow:0 4px 12px rgba(15,23,42,.08) !important;
}
.card.ad-card.ld-ad-card--top > .ld-card-link{height:100%;}
.card.ad-card.ld-ad-card--top > .ld-card-link::after{
  content:"";position:absolute;inset:45% 0 0;z-index:1;pointer-events:none;
  background:linear-gradient(to top,rgba(8,12,18,.88),rgba(8,12,18,.50) 45%,rgba(8,12,18,0));
}
.card.ad-card.ld-ad-card--top .img{
  position:absolute !important;inset:0 !important;width:100% !important;height:100% !important;
}
.card.ad-card.ld-ad-card--top .ld-card-photo{
  object-fit:cover !important;object-position:var(--ld-photo-focus,50% 8%) !important;
}
.card.ad-card.ld-ad-card--top .ld-card-no-photo{color:#cbd5e1;}
.card.ad-card.ld-ad-card--top .body{
  position:absolute !important;left:7px !important;right:7px !important;bottom:7px !important;
  z-index:4 !important;height:auto;overflow:visible;min-height:0 !important;padding:8px !important;
  border:1px solid transparent !important;border-radius:11px !important;
  background:transparent !important;color:#fff !important;box-shadow:none !important;
}
.card.ad-card.ld-ad-card--top .body h3{
  margin:0 0 3px !important;font-size:12px !important;color:#fff !important;
  text-shadow:0 1px 3px rgba(0,0,0,.7);
}
.card.ad-card.ld-ad-card--top .body p{
  font-size:10px !important;line-height:1.2 !important;color:#f5f7fa !important;
  text-shadow:0 1px 3px rgba(0,0,0,.7);
}
.card.ad-card.ld-ad-card--top .meta-row{
  position:absolute !important;left:0;right:0;top:-26px;margin:0 !important;
  display:flex;flex-wrap:nowrap;gap:4px;justify-content:space-between;
}
.card.ad-card.ld-ad-card--top .meta-row .badge,.card.ad-card.ld-ad-card--top .age-pill{
  min-width:0;font-size:9px !important;line-height:1;
  background:rgba(17,24,39,.83) !important;color:#fff !important;
  border:1px solid rgba(255,255,255,.35);white-space:nowrap;
}
.card.ad-card.ld-ad-card--top .card-actions{
  position:static;display:flex;flex-wrap:wrap;gap:3px !important;margin:5px 0 0 !important;padding:0 !important;
}
.card.ad-card.ld-ad-card--top .card-actions span{font-size:9px !important;padding:3px 4px !important;line-height:1.1;}
.card.ad-card.ld-ad-card--top .card-actions .online{font-size:8px !important;}

/* City pages mirror the homepage's three separate sections. Only TOP moves. */
.ld-city-premium-zone{
  margin-top:16px;padding:14px;border:1px solid #efdca2;border-radius:22px;
  background:linear-gradient(135deg,#fff8e6 0%,#fff 54%,#f8fafc 100%);
  box-shadow:var(--shadow);overflow:hidden;
}
.section-block.ld-city-latest{margin-top:24px;}
:is(.ld-city-premium-zone,.ld-city-latest) .section-head{gap:10px;margin-bottom:10px;}
:is(.ld-city-premium-zone,.ld-city-latest) .section-head h2{font-size:21px;line-height:1.15;}
:is(.ld-city-premium-zone,.ld-city-latest) .section-head p{font-size:11.5px;}
.ld-city-carousel-wrap{
  --carousel-gap:12px;--carousel-speed:72;--ld-city-top-width:198px;
  position:relative;margin-top:8px;overflow-x:auto;overflow-y:hidden;
  contain:paint;isolation:isolate;scrollbar-width:none;
}
.ld-city-carousel-wrap::-webkit-scrollbar,.ld-city-vip-strip::-webkit-scrollbar{display:none;}
.ld-city-carousel-wrap.is-swipeable{overflow:hidden;touch-action:pan-y pinch-zoom;cursor:grab;}
.ld-city-carousel-wrap.is-dragging{cursor:grabbing;}
.ld-city-carousel-wrap.is-swipeable .ld-city-carousel-track{user-select:none;-webkit-user-select:none;will-change:transform;}
.ld-city-carousel-track{display:flex;width:max-content;}
.ld-city-carousel-group{display:flex;flex:0 0 auto;align-items:stretch;gap:var(--carousel-gap);padding-right:var(--carousel-gap);}
.ld-city-carousel-group .card.ad-card.ld-ad-card{
  flex:0 0 var(--ld-city-top-width);width:var(--ld-city-top-width);
  min-width:var(--ld-city-top-width);max-width:var(--ld-city-top-width);
}
.ld-city-vip-strip{
  display:flex;flex-wrap:nowrap;gap:12px;overflow-x:auto;overflow-y:hidden;
  padding:2px 0 5px;scrollbar-width:none;scroll-snap-type:x proximity;
}
.ld-city-vip-strip .card.ad-card.ld-ad-card{
  flex:0 0 198px;width:198px;min-width:0;max-width:none;scroll-snap-align:start;
}
:is(.ld-city-carousel-wrap,.ld-city-vip-strip):focus-visible{outline:2px solid #9f771e;outline-offset:2px;}

/* Search placeholders use the same dimensions, avoiding a size jump on load. */
.search-skeleton-grid{display:grid !important;grid-template-columns:repeat(5,minmax(0,1fr)) !important;gap:var(--ld-card-gap) !important;}
.search-skeleton-card{height:calc(var(--ld-card-photo-height) + var(--ld-card-body-height) + 2px) !important;border-radius:16px !important;}
@media(max-width:900px){
  :root{--ld-card-photo-height:210px;--ld-card-gap:9px;--ld-top-height:305px;}
  .grid.ld-card-grid,.search-skeleton-grid{grid-template-columns:repeat(3,minmax(0,1fr)) !important;}
  .ld-city-carousel-wrap{--ld-city-top-width:190px;}
  .ld-city-vip-strip{gap:9px;}
  .ld-city-vip-strip .card.ad-card.ld-ad-card{flex-basis:190px;width:190px;}
}
@media(max-width:620px){
  :root{--ld-card-photo-height:clamp(158px,44vw,190px);--ld-card-body-height:105px;--ld-card-gap:8px;--ld-top-height:clamp(258px,70vw,286px);}
  main.wrap.ld-listing-page{padding:10px 8px 22px;}
  .grid.ld-card-grid,.search-skeleton-grid{grid-template-columns:repeat(2,minmax(0,1fr)) !important;}
  .card.ad-card.ld-ad-card .body{padding:8px !important;}
  .card.ad-card.ld-ad-card .card-actions .online{display:none;}
  .card.ad-card.ld-ad-card--top .body{padding:7px 5px !important;left:5px !important;right:5px !important;bottom:6px !important;}
  .card.ad-card.ld-ad-card--top .body h3{font-size:11px !important;}
  .card.ad-card.ld-ad-card--top .body p{font-size:9px !important;}
  .card.ad-card.ld-ad-card--top .meta-row{top:-25px;gap:2px;}
  .card.ad-card.ld-ad-card--top .meta-row .badge,.card.ad-card.ld-ad-card--top .age-pill{font-size:8px !important;padding:4px 3px !important;}
  .card.ad-card.ld-ad-card--top .new-badge{top:61px !important;left:7px !important;right:auto !important;}
  .card.ad-card.ld-ad-card--top .card-save-btn,
  .card.ad-card.ld-ad-card--top:not(:has(.new-badge)) .card-save-btn{top:7px !important;right:6px !important;width:28px;min-width:28px;height:28px;}
  .card.ad-card.ld-ad-card--top .vip-badge{font-size:8px !important;padding:4px !important;}
  .card.ad-card.ld-ad-card--top .verified-badge{font-size:8px !important;}
  .ld-city-premium-zone{padding:9px;border-radius:16px;}
  :is(.ld-city-premium-zone,.ld-city-latest) .section-head h2{font-size:17px;}
  :is(.ld-city-premium-zone,.ld-city-latest) .section-head p{font-size:10.5px;}
  .ld-city-carousel-wrap{--carousel-gap:6px;--ld-city-top-width:calc((100vw - 48px) / 2.5);}
  .ld-city-vip-strip{gap:8px;}
  .ld-city-vip-strip .card.ad-card.ld-ad-card{flex-basis:calc((100vw - 44px) / 2);width:calc((100vw - 44px) / 2);}
}
@media(hover:none){
  .card.ad-card.ld-ad-card{transition:none;}
  .card.ad-card.ld-ad-card:hover{transform:none;}
}
