/* GENERATED from listing-card.css by tools/qa/split-listing-card-css.php (2026-09-23).
   listing-card.css stays frozen for installed themes (the CDN holds one unversioned
   copy per file); new themes load listing-card-common.css plus the active fork's
   card family file only. Edit THESE files from now on. */
.ppt-lc-es-pill{
  display:inline-flex;align-items:center;
  border-radius:999px;padding:3px 9px;
  font-family:var(--ppt-font-display,inherit);
  font-weight:700;font-size:10px;line-height:1.4;letter-spacing:.06em;
  text-transform:uppercase;white-space:nowrap;
  color:var(--ppt-pill-fg,#fff);background:var(--ppt-pill-bg,#111827);
}
.ppt-lc-es-pill.is-online{color:#fff;background:var(--ppt-online,#16a34a);}
/* A live paid Boost. Amber with dark ink so it reads as "promoted" rather than as one
   more thing the owner chose about themselves, and carries the same bolt as the hub
   button that started it. */
.ppt-lc-es-pill.is-boosted{display:inline-flex;align-items:center;gap:4px;color:#3d2a00;background:var(--ppt-boost,#f9c22e);}
.ppt-lc-es-pill.is-boosted svg{flex:none;}
.ppt-lc-es-pill.is-match{color:var(--ppt-brand-ink,#fff);background:var(--ppt-brand,#111827);}
/* Escort fork (_es): a portrait poster card. A profile is looked at, not read, so
   the photo fills the whole tile and the only text on it is the LIVE pill
   (top-left), the diagonal FEATURED banner (top-right corner) and the name, city
   and badge/ONLINE pill row on a scrim along the bottom edge — no excerpt,
   rating, price or CTA. With no photo
   the tile is an empty gradient placeholder tinted from the design's own brand
   colour, so a board of unphotographed profiles still reads as a board. The card
   renders no .ppt-lc-body at all, so none of the body/footer rules above apply.
   Only rendered by Ppt\_es\ListingCard, so these classes never appear elsewhere. */
.ppt-lc--escort .ppt-lc-media{flex:1;display:block;overflow:hidden;}
.ppt-lc--escort .ppt-lc-img,.ppt-lc--escort .ppt-lc-noimg{display:block;width:100%;height:100%;aspect-ratio:3/4;object-fit:cover;}
.ppt-lc--escort .ppt-lc-img{transition:transform .5s cubic-bezier(.2,.6,.2,1);}
.ppt-lc--escort:hover .ppt-lc-img{transform:scale(1.05);}
/* The empty placeholder: a plain three-stop gradient, no figure or glyph. Built
   from --ppt-brand so each design tints it its own way; the flat grey line above
   is the fallback for engines without color-mix(). */
.ppt-lc--escort .ppt-lc-noimg{
  background:linear-gradient(150deg,#dfe3ea 0%,#c9cfda 55%,#b9c0cc 100%);
  background:linear-gradient(150deg,
    color-mix(in srgb,var(--ppt-brand,#b4237f) 70%,#fff) 0%,
    color-mix(in srgb,var(--ppt-brand,#b4237f) 92%,#000) 54%,
    color-mix(in srgb,var(--ppt-brand,#b4237f) 66%,#000) 100%);
}
/* Scrim — carries the name/city over any photo, however light. */
.ppt-lc--escort .ppt-lc-media::after{
  content:"";position:absolute;inset-inline:0;bottom:0;height:62%;z-index:1;
  pointer-events:none;
  background:linear-gradient(to top,rgba(6,8,15,.86) 0%,rgba(6,8,15,.52) 36%,rgba(6,8,15,0) 100%);
}
.ppt-lc--escort .ppt-lc-cat,.ppt-lc--escort .ppt-lc-feat,.ppt-lc--escort .ppt-lc-live{z-index:2;}
/* The category rides the corner as a solid brand pill (the reference "INDEPENDENT"
   chip), not the pale translucent chip the standard card uses. */
.ppt-lc--escort .ppt-lc-cat{
  top:11px;inset-inline-start:11px;
  background:var(--ppt-brand,#b4237f);color:var(--ppt-brand-ink,#fff);
  -webkit-backdrop-filter:none;backdrop-filter:none;
  font-family:var(--ppt-font-display,inherit);
  font-weight:700;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;
  padding:4px 9px;box-shadow:0 2px 8px rgba(4,8,15,.22);
}
/* LIVE sits top-LEFT on this card, because the top-right corner belongs to the
   ribbon below — a profile can be featured AND broadcasting, and before this they
   fought over one corner. The category chip that used to hold this spot is never
   drawn here (see the fork's ListingCard), so nothing else wants it.
   `.ppt-lc-feat` is never emitted on an escort card any more (the ribbon says it
   instead), but it is kept in this selector so a stray one can't land in the corner
   the ribbon now owns. */
.ppt-lc--escort .ppt-lc-feat,.ppt-lc--escort .ppt-lc-live{top:11px;inset-inline-start:11px;inset-inline-end:auto;}
/* Identity block: name over city, bottom-left on the scrim. */
.ppt-lc-es-id{
  position:absolute;inset-inline:0;bottom:0;z-index:2;
  display:flex;flex-direction:column;gap:3px;
  padding:14px 15px 15px;
  font-family:var(--ppt-font-body,inherit);
}
/* Compound selector on purpose: the design tokens ship an inline
   `.ppt-block h1..h4{color:var(--ppt-ink)}` rule (specificity 0,1,1) and the home
   page's Featured grid renders these cards INSIDE a .ppt-block, so a lone
   `.ppt-lc-es-name` (0,1,0) lost and every name went ink-black on its own photo. */
.ppt-lc-es-id .ppt-lc-es-name{
  margin:0;font-family:var(--ppt-font-display,inherit);
  font-weight:700;font-size:17px;line-height:1.2;letter-spacing:-.01em;color:#fff;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  text-shadow:0 1px 3px rgba(4,8,15,.45);
}
.ppt-lc-es-loc{
  display:inline-flex;align-items:center;gap:5px;
  font-size:12.5px;line-height:1.3;color:rgba(255,255,255,.87);
  text-shadow:0 1px 3px rgba(4,8,15,.4);
}
.ppt-lc-es-dist{font-weight:600;color:rgba(255,255,255,.72);}
.ppt-lc-es-city+.ppt-lc-es-dist::before{content:"\00b7";margin-inline-end:5px;}
/* Pill row under the name/city: the owner's own badges (Ppt\_es\Badges — each
   carries its two colours inline, which is the ONLY thing the style attribute on
   these is for) followed by the derived ONLINE pill. It wraps rather than scrolls,
   because a card that changes height mid-grid is worse than a two-line row. */
/* Escort placement only — the shared pill LOOK is defined once near .ppt-lc-pills
   at the top of this file. Over a photo rather than on panel white, so these get a
   drop shadow the body row does not need. */
.ppt-lc-es-pills{display:flex;flex-wrap:wrap;align-items:center;gap:5px;margin-top:5px;}
.ppt-lc-es-pill{box-shadow:0 1px 6px rgba(4,8,15,.3);}
/* List view: the same poster, widened into the full-width row rather than split
   into thumbnail + text — there is no text column to fill. INERT as shipped: the
   fork is grid-only (Admin\Search::viewKeys() drops 'list' on _es, which hides the
   toggle), so these rules only apply if list view is ever offered again here. */
[data-view="list"] .ppt-lc--escort{flex-direction:column;min-height:0;}
[data-view="list"] .ppt-lc--escort .ppt-lc-media{flex:none;max-width:none;}
[data-view="list"] .ppt-lc--escort .ppt-lc-img,[data-view="list"] .ppt-lc--escort .ppt-lc-noimg{height:auto;min-height:0;aspect-ratio:16/9;}
/* Profile photos are portraits, so a wide band centred on the image crops through
   the neck. Bias the crop upwards to keep the face in the row. */
[data-view="list"] .ppt-lc--escort .ppt-lc-img{object-position:50% 22%;}
[data-view="list"] .ppt-lc--escort .ppt-lc-es-id{padding:18px 20px;}
[data-view="list"] .ppt-lc--escort .ppt-lc-es-name{font-size:21px;}
[data-view="list"] .ppt-lc--escort .ppt-lc-es-loc{font-size:13.5px;}
@media(max-width:640px){
  /* A 16:6 band is a letterbox slit on a phone — back to a poster. */
  [data-view="list"] .ppt-lc--escort .ppt-lc-img,[data-view="list"] .ppt-lc--escort .ppt-lc-noimg{aspect-ratio:4/3;}
  [data-view="list"] .ppt-lc--escort .ppt-lc-es-name{font-size:18px;}
  /* Two-up phone grid: the poster survives at ~180px wide, the type has to shrink. */
  .row-cols-2 .ppt-lc--escort .ppt-lc-es-id{padding:10px 11px 11px;gap:2px;}
  .row-cols-2 .ppt-lc--escort .ppt-lc-es-name{font-size:14.5px;}
  .row-cols-2 .ppt-lc--escort .ppt-lc-es-loc{font-size:11.5px;}
  .row-cols-2 .ppt-lc--escort .ppt-lc-cat{font-size:9.5px;padding:3px 7px;top:9px;inset-inline-start:9px;}
  /* Two-up phone grid: the pills and the corner banner shrink with the rest of the
     card, or a three-badge profile eats half the poster. */
  .row-cols-2 .ppt-lc--escort .ppt-lc-es-pills{gap:4px;margin-top:4px;}
  .row-cols-2 .ppt-lc--escort .ppt-lc-es-pill{font-size:8.5px;padding:2px 7px;letter-spacing:.04em;}
  .row-cols-2 .ppt-lc--escort .ppt-lc-ribbon{width:96px;height:96px;}
  .row-cols-2 .ppt-lc--escort .ppt-lc-ribbon > span{top:19px;inset-inline-end:-48px;width:154px;font-size:9px;padding:5px 0;}
}
