← back to Nationalrealestate

public/crcp-grid.css

99 lines

/* crcp-grid.css — styles for the reusable CrcpGrid engine. Namespaced .cg-* so it never
 * collides with a host page. Colors read the host's CSS vars with safe fallbacks, so the
 * engine inherits each page's theme (condos dark, fha-loans glass, sales gold) automatically. */
.cg-shell{display:flex;align-items:flex-start;}
.cg-rail{flex:0 0 250px;align-self:stretch;border-right:1px solid var(--cg-line,#2a313c);background:var(--cg-railbg,rgba(0,0,0,.18));position:sticky;top:0;max-height:100vh;overflow-y:auto;padding-bottom:30px;}
.cg-main{flex:1 1 auto;min-width:0;--cg-cols:3;}
.cg-sec{padding:12px 15px;border-bottom:1px solid var(--cg-line,#2a313c);}
.cg-sec h4{margin:0 0 9px;font-size:11px;text-transform:uppercase;letter-spacing:.6px;color:var(--cg-mut,#8b949e);cursor:pointer;display:flex;align-items:center;justify-content:space-between;user-select:none;}
.cg-sec h4::after{content:'▾';font-size:11px;margin-left:8px;transition:transform .15s;}
.cg-sec.collapsed h4::after{transform:rotate(-90deg);}
.cg-sec.collapsed > *:not(h4){display:none !important;}
.cg-chips{display:flex;flex-wrap:wrap;gap:6px;}
.cg-chip{background:var(--cg-card,#161b22);color:var(--cg-mut,#8b949e);border:1px solid var(--cg-line,#2a313c);border-radius:16px;padding:4px 10px;font-size:12px;cursor:pointer;user-select:none;}
.cg-chip:hover{color:var(--cg-ink,#e6edf3);}
.cg-chip.active{border-color:var(--cg-acc,#58a6ff);color:var(--cg-acc,#58a6ff);background:var(--cg-accbg,rgba(88,166,255,.10));}
.cg-ct{color:var(--cg-mut,#8b949e);font-size:10px;margin-left:4px;}
.cg-row2{display:flex;gap:8px;}
.cg-fld{flex:1;}
.cg-fld label{display:block;font-size:10px;color:var(--cg-mut,#8b949e);margin-bottom:3px;}
.cg-fld input{width:100%;background:var(--cg-card,#161b22);color:var(--cg-ink,#e6edf3);border:1px solid var(--cg-line,#2a313c);border-radius:8px;padding:7px 9px;font-size:13px;}
.cg-ftogs{display:flex;flex-direction:column;gap:1px;max-height:300px;overflow-y:auto;}
.cg-ftog{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--cg-ink,#e6edf3);cursor:pointer;padding:3px 4px;border-radius:6px;}
.cg-ftog:hover{background:var(--cg-accbg,rgba(88,166,255,.06));}
.cg-mini{margin-top:8px;display:flex;gap:5px;}
.cg-mini button{background:var(--cg-card,#161b22);color:var(--cg-mut,#8b949e);border:1px solid var(--cg-line,#2a313c);border-radius:7px;padding:4px 9px;font-size:11px;cursor:pointer;}
.cg-mini button:hover{border-color:var(--cg-acc,#58a6ff);color:var(--cg-ink,#e6edf3);}
.cg-top{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:13px 18px;border-bottom:1px solid var(--cg-line,#2a313c);position:sticky;top:0;background:var(--cg-topbg,rgba(14,17,22,.94));backdrop-filter:blur(6px);z-index:6;}
/* active-filter summary bar (removable chips + clear all) */
.cg-active{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:12px 18px 0;}
.cg-active:empty{display:none;}
.cg-af-lbl{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--cg-mut,#8b949e);}
.cg-af{display:inline-flex;align-items:center;gap:6px;font-size:12px;cursor:pointer;
  background:var(--cg-accbg,rgba(200,162,75,.12));color:var(--cg-ink,#e6edf3);
  border:1px solid var(--cg-acc,#58a6ff);border-radius:14px;padding:3px 10px;white-space:nowrap;}
.cg-af b{color:var(--cg-acc,#58a6ff);font-weight:700;}
.cg-af:hover{background:var(--cg-acc,#58a6ff);color:var(--cg-railbg,#0b0e13);}
.cg-af:hover b{color:var(--cg-railbg,#0b0e13);}
.cg-af-clear{font-size:12px;background:none;border:0;cursor:pointer;padding:3px 6px;
  color:var(--cg-mut,#8b949e);text-decoration:underline;}
.cg-af-clear:hover{color:var(--cg-acc,#58a6ff);}
.cg-af-copy{font-size:12px;background:none;border:1px solid var(--cg-line,#2a313c);cursor:pointer;padding:3px 10px;
  border-radius:8px;color:var(--cg-mut,#8b949e);}
.cg-af-copy:hover{color:var(--cg-acc,#58a6ff);border-color:var(--cg-acc,#58a6ff);}
.cg-q{min-width:240px;background:var(--cg-card,#161b22);color:var(--cg-ink,#e6edf3);border:1px solid var(--cg-line,#2a313c);border-radius:8px;padding:8px 11px;font-size:13px;}
.cg-seg{display:inline-flex;border:1px solid var(--cg-line,#2a313c);border-radius:8px;overflow:hidden;}
.cg-seg button{background:var(--cg-card,#161b22);color:var(--cg-mut,#8b949e);border:0;border-right:1px solid var(--cg-line,#2a313c);padding:7px 12px;font-size:12px;cursor:pointer;}
.cg-seg button:last-child{border-right:0;}
.cg-seg button.active{background:var(--cg-acc,#1f6feb);color:#fff;}
.cg-dens{font-size:12px;color:var(--cg-mut,#8b949e);display:flex;align-items:center;gap:7px;}
.cg-dens input{accent-color:var(--cg-acc,#58a6ff);}
.cg-count{margin-left:auto;font-size:12px;color:var(--cg-mut,#8b949e);}
.cg-count b{color:var(--cg-ink,#e6edf3);}
.cg-grid{display:grid;gap:16px;padding:18px;grid-template-columns:repeat(var(--cg-cols,3),minmax(0,1fr));}
.cg-grid.cg-listhost{display:block;}
.cg-card{background:var(--cg-card,#161b22);border:1px solid var(--cg-line,#2a313c);border-radius:12px;padding:15px;display:flex;flex-direction:column;gap:5px;}
.cg-card.red{border-color:var(--cg-red,#f85149);}
.cg-name{font-weight:600;font-size:14px;color:var(--cg-ink,#e6edf3);}
.cg-sub{font-size:12px;color:var(--cg-mut,#8b949e);}
.cg-r{display:flex;justify-content:space-between;font-size:12px;gap:10px;}
.cg-r .cg-k{color:var(--cg-mut,#8b949e);}
.cg-empty{padding:64px 24px;text-align:center;color:var(--cg-mut,#8b949e);display:flex;flex-direction:column;align-items:center;gap:8px;}
.cg-empty-ic{font-size:40px;line-height:1;opacity:.5;}
.cg-empty-t{font-size:18px;font-weight:700;color:var(--cg-ink,#e6edf3);}
.cg-empty-s{font-size:13px;}
.cg-empty-btn{margin-top:10px;text-decoration:none;background:var(--cg-acc,#58a6ff);color:var(--cg-railbg,#0b0e13);
  border:0;border-radius:8px;padding:9px 18px;font-size:13px;font-weight:700;cursor:pointer;}
.cg-empty-btn:hover{filter:brightness(1.08);}
.cg-listwrap{overflow-x:auto;margin:18px;border:1px solid var(--cg-line,#2a313c);border-radius:12px;}
.cg-tbl{width:100%;border-collapse:collapse;font-size:12.5px;white-space:nowrap;}
.cg-tbl th,.cg-tbl td{text-align:right;padding:9px 13px;border-top:1px solid var(--cg-line,#2a313c);}
.cg-tbl th{position:sticky;top:0;background:var(--cg-railbg,#0b0e13);color:var(--cg-mut,#8b949e);font-size:10px;text-transform:uppercase;letter-spacing:.5px;border-top:0;}
.cg-tbl td.cg-stick,.cg-tbl th.cg-stick{text-align:left;position:sticky;left:0;background:var(--cg-card,#161b22);}
.cg-tbl th.cg-stick{background:var(--cg-railbg,#0b0e13);}
.cg-tbl tr:hover td{background:var(--cg-accbg,rgba(88,166,255,.06));}
.cg-tbl tr.red td{background:rgba(248,81,73,.07);}
.cg-la{font-weight:600;color:var(--cg-ink,#e6edf3);}
.cg-lc{color:var(--cg-mut,#8b949e);font-size:11px;}
/* mobile filter access: rail becomes an off-canvas drawer opened by the .cg-filt-btn */
.cg-filt-btn{display:none;align-items:center;gap:6px;background:var(--cg-card,#161b22);color:var(--cg-ink,#e6edf3);
  border:1px solid var(--cg-acc,#58a6ff);border-radius:8px;padding:8px 12px;font-size:13px;cursor:pointer;white-space:nowrap;}
.cg-rail-backdrop{position:fixed;inset:0;z-index:1250;background:rgba(0,0,0,.5);opacity:0;visibility:hidden;transition:opacity .2s;}
.cg-rail-backdrop.open{opacity:1;visibility:visible;}
@media(max-width:820px){
  .cg-filt-btn{display:inline-flex;}
  .cg-top{padding-left:66px;} /* clear the fixed upper-left hamburger */
  .cg-rail{position:fixed;top:0;left:0;height:100%;width:290px;max-width:86vw;z-index:1300;
    transform:translateX(-100%);transition:transform .22s ease;box-shadow:2px 0 22px rgba(0,0,0,.55);}
  .cg-rail.open{transform:translateX(0);}
}
/* --- USRE adaptations (nationalrealestate) --- */
.cg-sort{background:var(--cg-card,#161b22);color:var(--cg-ink,#e6edf3);border:1px solid var(--cg-line,#2a313c);border-radius:8px;padding:8px 10px;font-size:13px;}
.cg-sortth{cursor:pointer;user-select:none;}
.cg-sortth:hover{color:var(--cg-ink,#e6edf3);}
/* density slider drives list-view row padding + font size via --cg-dens (1..12) */
.cg-tbl{font-size:calc(15.5px - var(--cg-dens,3)*0.45px);font-variant-numeric:tabular-nums;}
.cg-tbl th,.cg-tbl td{padding:calc(14px - var(--cg-dens,3)*1px) calc(16px - var(--cg-dens,3)*0.8px);}
.cg-tbl tr[data-ri]{cursor:pointer;}
.cg-tbl tr.dim td,.cg-card.dim{opacity:.45;}