:root{--pa-ink:#17213a;--pa-muted:#5b6780;--pa-line:#e3e8f0;--pa-blue:#2f4fa8}
*{box-sizing:border-box}
body.pub-apartments{margin:0;background:#f4f6fb;color:var(--pa-ink);font:15px/1.5 Inter,system-ui,sans-serif}
.pa-shell{max-width:1180px;margin:0 auto;padding:28px 20px 56px}
.pa-intro{padding:26px 0 22px}
.pa-kicker{margin:0 0 8px;color:#a67c1a;font:800 11px Inter,system-ui;letter-spacing:1.4px}
.pa-intro h1{margin:0 0 10px;font:700 clamp(26px,3.4vw,40px)/1.15 Georgia,'Times New Roman',serif;max-width:20ch}
.pa-lead{margin:0 0 18px;max-width:62ch;color:var(--pa-muted)}
.pa-cta,.pa-unlock{display:inline-block;border-radius:99px;background:var(--pa-blue);color:#fff;text-decoration:none;font:700 14px Inter,system-ui;padding:12px 22px}
.pa-cta:hover,.pa-unlock:hover{background:#243d84}
.pa-results-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:14px 0 12px;border-top:1px solid var(--pa-line)}
.pa-results-head b{font-size:17px}
.pa-results-head small{color:var(--pa-muted)}
.pa-grid{display:grid;gap:18px;grid-template-columns:repeat(auto-fill,minmax(258px,1fr))}
.pa-empty{grid-column:1/-1;padding:34px;text-align:center;color:var(--pa-muted);background:#fff;border:1px solid var(--pa-line);border-radius:12px}
.pa-card{background:#fff;border:1px solid var(--pa-line);border-radius:12px;overflow:hidden;display:flex;flex-direction:column}
.pa-photo{position:relative;aspect-ratio:4/3;background:#eef1f7}
.pa-photo img{width:100%;height:100%;object-fit:cover;display:block}
.pa-photo-empty{position:absolute;inset:0;display:grid;place-items:center;color:#8490a6;font-size:13px}
.pa-special{position:absolute;top:12px;left:12px;padding:6px 11px;border-radius:7px;background:#e5c15d;color:#3d2f07;font:800 11px Inter,system-ui;letter-spacing:.4px;text-transform:uppercase}
.pa-body{padding:14px 15px 16px;display:flex;flex-direction:column;gap:7px;flex:1}
/* The name is not in the payload at all; this blurs the stand-in so the card
   reads as "a specific community we will name on a call". */
.pa-name{margin:0;font:700 16px Inter,system-ui}
.pa-name span{filter:blur(4.5px);user-select:none;-webkit-user-select:none;pointer-events:none;display:inline-block;color:#41506e}
.pa-area{margin:0;color:var(--pa-muted);font-size:13px}
.pa-price{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-top:2px}
.pa-price b{font:700 21px Inter,system-ui}
.pa-price b small{font-size:12px;font-weight:600;color:var(--pa-muted)}
.pa-price span{color:var(--pa-muted);font-size:13px}
.pa-availability{margin:0;color:#17754f;font-size:12.5px}
.pa-unlock{margin-top:auto;text-align:center;font-size:13px;padding:10px 16px}
.pa-foot{padding:22px 20px 34px;text-align:center;color:var(--pa-muted);font-size:13px}
@media(max-width:560px){.pa-grid{grid-template-columns:1fr}}
/* The shared public nav has no style for a call to action, so it inherited a
   dark link colour on a dark bar and disappeared. */
.pub-nav .pub-cta{display:inline-block;padding:9px 17px;border-radius:99px;background:#e5c15d;color:#2b2306;font:800 12px Inter,system-ui;letter-spacing:.3px;text-decoration:none;white-space:nowrap}
.pub-nav .pub-cta:hover{background:#f0cf74}
/* The stand-in name wraps to two lines for longer submarkets; reserving the
   second line keeps every card's price on the same baseline. */
.pa-name{min-height:2.5em}
