/* ============================================================
   BROWSE PORTFOLIO (Phase 5)
   Transcribed from _docs/design/Browse Portfolio.dc.html. SSR cards, client
   filter/sort/view. Uniformly sage (per-domain accent is a lander concern).
   Loaded only on the front page (see inc/portfolio.php).
   ============================================================ */

/* ---------- HERO (the common site nav is in header.php) ---------- */
.vpd-pf__hero { background: var(--ink-hero); position: relative; overflow: hidden; }
.vpd-pf__hero-rings { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
.vpd-pf__hero-inner { position: relative; max-width: var(--container); margin: 0 auto; padding: 60px clamp(18px,4vw,32px) 64px; }
.vpd-pf__hero-eyebrow { display: inline-flex; align-items: center; gap: 8px; padding: 7px 14px; border-radius: var(--r-pill); background: rgba(92,143,119,.12); border: 1px solid rgba(92,143,119,.35); font: 600 11px/1 var(--font-head); letter-spacing: .14em; text-transform: uppercase; color: var(--on-dark-eyebrow); }
.vpd-pf__hero-title { margin: 20px 0 0; font: 700 clamp(34px,5vw,54px)/1.03 var(--font-head); letter-spacing: -.03em; color: #fff; max-width: 20ch; }
.vpd-pf__hero-sub { margin: 18px 0 0; max-width: 56ch; font: 400 17px/1.55 var(--font-body); color: var(--on-dark-text); }

/* ---------- MAIN ---------- */
.vpd-pf__main { max-width: var(--container); margin: 0 auto; padding: 40px clamp(18px,4vw,32px) 80px; display: flex; flex-wrap: wrap; gap: 28px; align-items: flex-start; }

/* ---------- SIDEBAR ---------- */
.vpd-pf__side { flex: 1 1 250px; position: sticky; top: 88px; display: flex; flex-direction: column; gap: 22px; background: #fff; border: 1px solid var(--card-border); border-radius: 20px; padding: 24px 22px; box-shadow: var(--sh-card); }
.vpd-pf__side-head { display: flex; align-items: center; justify-content: space-between; }
.vpd-pf__side-title { display: flex; align-items: center; gap: 9px; font: 700 15px/1 var(--font-head); color: var(--ink); }
.vpd-pf__side-ico { color: var(--accent); display: inline-flex; }
.vpd-pf__clear { font: 600 12px/1 var(--font-head); color: var(--accent-deep); background: none; border: none; cursor: pointer; padding: 0; }
.vpd-pf__group { display: flex; flex-direction: column; gap: 10px; }
.vpd-pf__group-label { font: 600 11px/1 var(--font-head); letter-spacing: .12em; text-transform: uppercase; color: var(--muted); }
.vpd-pf__group-row { display: flex; align-items: center; justify-content: space-between; }
.vpd-pf__group-val { font: 700 13px/1 var(--font-head); color: var(--accent-deep); }

.vpd-pf__cats { display: flex; flex-direction: column; gap: 4px; }
.vpd-pf__cat { display: flex; align-items: center; justify-content: space-between; gap: 8px; width: 100%; padding: 9px 12px; border-radius: 10px; border: 1px solid transparent; background: none; cursor: pointer; font: 600 13.5px/1.1 var(--font-head); text-align: left; color: var(--body); transition: background .14s ease, color .14s ease; }
.vpd-pf__cat.is-active { background: var(--accent-tint); color: var(--accent-deep); border-color: var(--accent-border); }
.vpd-pf__cat-l { display: flex; align-items: center; gap: 10px; }
.vpd-pf__cat-ico { display: inline-flex; }
.vpd-pf__cat-n { font: 600 11px/1 var(--font-head); opacity: .7; }

.vpd-pf__tlds { display: flex; flex-wrap: wrap; gap: 8px; }
.vpd-pf__tld { padding: 7px 13px; border-radius: var(--r-pill); border: 1.4px solid var(--input-border); background: #fff; cursor: pointer; font: 600 12.5px/1 var(--font-head); color: var(--body); transition: all .14s ease; }
.vpd-pf__tld.is-active { background: var(--accent); color: #fff; border-color: var(--accent); }

.vpd-pf__range { width: 100%; accent-color: var(--accent); }

.vpd-pf__premium { display: flex; align-items: center; justify-content: space-between; gap: 10px; width: 100%; padding: 12px 14px; border-radius: 12px; border: 1px solid var(--card-border); background: #fff; cursor: pointer; color: var(--body); }
.vpd-pf__premium.is-active { border-color: var(--accent-border); background: var(--accent-tint); color: var(--accent-deep); }
.vpd-pf__premium-l { display: flex; align-items: center; gap: 9px; font: 600 13.5px/1 var(--font-head); }
.vpd-pf__premium-ico { display: inline-flex; }
.vpd-pf__switch { position: relative; width: 40px; height: 22px; border-radius: var(--r-pill); background: #d9d8d2; flex: none; transition: background .18s ease; }
.vpd-pf__premium.is-active .vpd-pf__switch { background: var(--accent); }
.vpd-pf__switch-dot { position: absolute; top: 2px; left: 2px; width: 18px; height: 18px; border-radius: 50%; background: #fff; transition: left .18s ease; box-shadow: 0 1px 3px rgba(0,0,0,.2); }
.vpd-pf__premium.is-active .vpd-pf__switch-dot { left: 20px; }

/* ---------- RESULTS ---------- */
.vpd-pf__results { flex: 100 1 340px; min-width: 0; display: flex; flex-direction: column; gap: 20px; }
.vpd-pf__toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 14px; }
.vpd-pf__search { position: relative; flex: 1; min-width: 220px; }
.vpd-pf__search-ico { color: var(--muted); position: absolute; left: 15px; top: 50%; transform: translateY(-50%); display: inline-flex; }
.vpd-pf__search-input { width: 100%; padding: 13px 15px 13px 42px; border: 1.4px solid var(--input-border); border-radius: 12px; font: 400 15px/1.2 var(--font-body); color: var(--ink); background: #fff; outline: none; }
.vpd-pf__search-input:focus { border-color: var(--accent); }
.vpd-pf__sort { display: flex; align-items: center; gap: 9px; }
.vpd-pf__sort-label { font: 500 13px/1 var(--font-body); color: var(--muted); white-space: nowrap; }
.vpd-pf__sort-select { padding: 12px 14px; border: 1.4px solid var(--input-border); border-radius: 12px; font: 500 14px/1.2 var(--font-body); color: var(--ink); background: #fff; outline: none; cursor: pointer; }
.vpd-pf__sort-select:focus { border-color: var(--accent); }
.vpd-pf__seg { display: flex; align-items: center; gap: 4px; padding: 4px; background: #fff; border: 1.4px solid var(--input-border); border-radius: 12px; }
.vpd-pf__seg-btn { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 30px; border: none; border-radius: 8px; cursor: pointer; background: none; color: var(--muted); }
.vpd-pf__seg-btn.is-active { background: var(--accent); color: #fff; }

.vpd-pf__count { font: 500 13.5px/1 var(--font-body); color: var(--body); }
.vpd-pf__count strong { color: var(--ink); font-family: var(--font-head); }

/* ---------- CARDS ---------- */
.vpd-pf__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px,1fr)); gap: 20px; }
.vpd-pf__grid.is-list { display: flex; flex-direction: column; gap: 14px; }

.vpd-pf__card { position: relative; background: #fff; border: 1px solid var(--card-border); border-radius: 18px; display: flex; flex-direction: column; padding: 30px 30px 26px; min-height: 210px; transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease; }
.vpd-pf__card:hover { transform: translateY(-3px); box-shadow: 0 14px 30px rgba(27,32,29,.08); border-color: var(--accent-border); }
.vpd-pf__card-link { position: absolute; inset: 0; z-index: 1; border-radius: inherit; }
.vpd-pf__card-main { display: flex; flex-direction: column; gap: 20px; }
.vpd-pf__card-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-height: 24px; }
.vpd-pf__tag { display: inline-flex; align-items: center; padding: 5px 12px; border-radius: var(--r-pill); background: var(--accent-tint); color: var(--accent-deep); font: 600 10.5px/1 var(--font-head); letter-spacing: .03em; }
.vpd-pf__star { display: inline-flex; }
.vpd-pf__name { font: 600 18px/1.2 var(--font-head); letter-spacing: -.015em; color: var(--ink); word-break: break-word; }
.vpd-pf__name-tld { color: var(--accent); }
.vpd-pf__card-foot { margin-top: auto; padding-top: 22px; border-top: 1px solid #f1f0eb; display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.vpd-pf__price-cap { font: 500 10px/1 var(--font-body); color: #a7aea8; text-transform: uppercase; letter-spacing: .08em; }
.vpd-pf__price-val { margin-top: 3px; font: 700 18px/1 var(--font-head); color: var(--ink); }
.vpd-pf__offer { position: relative; z-index: 2; display: inline-flex; align-items: center; gap: 7px; padding: 11px 16px; border: none; border-radius: 10px; background: var(--accent); color: #fff; font: 600 13px/1 var(--font-head); cursor: pointer; flex: none; transition: background .18s ease; }
.vpd-pf__offer:hover { background: var(--accent-deep); }

/* list variant */
.vpd-pf__grid.is-list .vpd-pf__card { flex-direction: row; align-items: center; gap: 24px; padding: 22px 28px; min-height: 0; }
.vpd-pf__grid.is-list .vpd-pf__card-main { flex: 1; min-width: 0; gap: 12px; }
.vpd-pf__grid.is-list .vpd-pf__card-foot { margin-top: 0; padding-top: 0; border-top: none; gap: 26px; flex: none; }

/* ---------- EMPTY STATE ---------- */
.vpd-pf__empty { padding: 64px 24px; text-align: center; background: #fff; border: 1px dashed #dcdbd4; border-radius: 18px; }
.vpd-pf__empty[hidden] { display: none; }
.vpd-pf__empty-ico { display: inline-flex; align-items: center; justify-content: center; width: 56px; height: 56px; border-radius: 50%; background: var(--accent-tint); color: var(--accent-deep); }
.vpd-pf__empty-title { margin: 18px 0 0; font: 700 20px/1.1 var(--font-head); color: var(--ink); }
.vpd-pf__empty-text { margin: 8px auto 0; max-width: 36ch; font: 400 14.5px/1.5 var(--font-body); color: var(--body); }
.vpd-pf__empty-btn { margin-top: 22px; padding: 12px 24px; border: 1.5px solid var(--accent-border); border-radius: var(--r-pill); background: #fff; color: var(--accent-deep); font: 600 14px/1 var(--font-head); cursor: pointer; transition: background .14s ease; }
.vpd-pf__empty-btn:hover { background: var(--accent-tint); }

/* ---------- FOOTER ---------- */
.vpd-pf__foot { border-top: 1px solid var(--card-border); background: #fff; }
.vpd-pf__foot-inner { max-width: var(--container); margin: 0 auto; padding: 32px clamp(18px,4vw,32px); display: flex; justify-content: center; font: 500 13px/1.4 var(--font-body); color: var(--muted); }

/* ---------- responsive ---------- */
@media (max-width: 900px) {
  .vpd-pf__side { position: static; }
}
