/* Vibe96 — Builder profile (/b/{handle}). Package 313: redesign with tiered badges (bpf- = builder profile).
   Colours use the central tokens from vibe96.css; each badge tier sets --tc (its colour) and --tb (its tint). */
.bpf{flex:1;background:#fff}
.bpf-wrap{width:min(1600px,calc(100% - 2 * clamp(20px,8.33vw,160px)));margin:0 auto}
.bpf-eyebrow{margin:0;font-size:12px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--v96-eyebrow)}
.bpf-faint{font-size:14px;color:var(--v96-faint)}
.bpf-sub{margin:10px 0 0;font-size:16px;line-height:1.6;color:var(--v96-body)}
.bpf-count{display:inline-block;min-width:20px;margin-left:6px;padding:1px 6px;border-radius:6px;background:var(--v96-soft);color:var(--v96-purple);font-size:12px;font-weight:700;text-align:center}
.bpf-sq{display:inline-block;width:11px;height:11px;margin-right:8px;border-radius:3px;background:var(--v96-border);vertical-align:-1px}

/* tier colours */
.bpf-t-q-85,.bpf-t-c-35{--tc:#14A37F;--tb:#E9F8F3}
.bpf-t-q-88,.bpf-t-c-40{--tc:#1597C4;--tb:#E8F7FC}
.bpf-t-q-90,.bpf-t-c-42{--tc:#2C7FE8;--tb:#EBF3FE}
.bpf-t-q-92{--tc:#4645E6;--tb:#EEEEFD}
.bpf-t-q-95,.bpf-t-c-45{--tc:#7A4DF0;--tb:#F2EDFE}
.bpf-t-q-98,.bpf-t-c-48{--tc:#DC3F76;--tb:#FDEEF3}
.bpf-t-q-100,.bpf-t-c-50{--tc:#C97C0C;--tb:#FDF4E6}

/* ---------- hero ---------- */
.bpf-hero{background:linear-gradient(180deg,#F6F1FE 0%,#FAF7FF 70%,#FBF9FE 100%)}
.bpf-crumbs{display:flex;flex-wrap:wrap;gap:12px;padding-top:34px;font-size:15px;color:var(--v96-faint)}
.bpf-crumbs a{color:var(--v96-faint)}.bpf-crumbs a:hover{color:var(--v96-purple)}
.bpf-crumb-now{color:var(--v96-text);font-weight:600}
.bpf-hero-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.62fr);gap:clamp(24px,4vw,80px);align-items:start;padding:34px 0 46px}
.bpf-id{display:flex;gap:24px;align-items:center}
.bpf-avatar{flex:none;display:grid;place-items:center;width:100px;height:100px;border-radius:24px;background:linear-gradient(145deg,#8E3BFF,#6B1CF0);color:#fff;font-size:42px;font-weight:700;box-shadow:0 18px 34px -16px rgba(118,36,244,.65)}
.bpf-name{margin:6px 0 0;font-size:clamp(34px,2.6vw,50px);line-height:1.05;font-weight:700;letter-spacing:-.035em;color:var(--v96-ink)}
.bpf-meta{display:flex;flex-wrap:wrap;gap:12px;margin:12px 0 0;font-size:15px;color:var(--v96-faint)}
.bpf-dot{color:var(--v96-border)}
.bpf-lead{max-width:440px;margin:30px 0 0;font-size:18px;line-height:1.65;color:var(--v96-body)}
.bpf-actions{display:flex;flex-wrap:wrap;align-items:center;gap:28px;margin-top:34px}
.bpf-btn{display:inline-flex;align-items:center;gap:22px;padding:15px 24px;border-radius:10px;background:var(--v96-purple);color:#fff;font-size:16px;font-weight:700;box-shadow:0 14px 26px -16px rgba(118,36,244,.8)}
.bpf-btn:hover{background:var(--v96-violet);color:#fff}
.bpf-share{border:0;background:none;padding:0;font:inherit;font-size:15px;color:var(--v96-body);cursor:pointer}
.bpf-share:hover{color:var(--v96-purple)}

.bpf-badges{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}
.bpf-badge{display:flex;flex-direction:column;border:1px solid var(--v96-soft-line);border-radius:18px;background:#fff;box-shadow:0 20px 44px -34px rgba(40,20,80,.35)}
.bpf-badge-top{display:flex;justify-content:space-between;align-items:center;padding:24px 22px 0;font-size:11.5px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--v96-eyebrow)}
.bpf-info{display:grid;place-items:center;width:18px;height:18px;border:1px solid var(--v96-border);border-radius:50%;font-size:11px;font-weight:600;letter-spacing:0;text-transform:none;color:var(--v96-faint)}
.bpf-info:hover{border-color:var(--v96-purple);color:var(--v96-purple)}
.bpf-badge-body{flex:1;display:flex;gap:20px;align-items:center;padding:16px 22px 22px}
.bpf-badge-img{flex:none;width:clamp(96px,7.3vw,140px);height:auto;filter:drop-shadow(0 12px 18px rgba(40,20,80,.16))}
.bpf-chip{display:inline-block;padding:4px 7px;border-radius:5px;background:var(--tb,var(--v96-tint));color:var(--tc,var(--v96-faint));font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.is-earned .bpf-chip{background:var(--v96-soft);color:var(--v96-purple)}
.bpf-badge-title{margin:12px 0 0;font-size:19px;font-weight:700;letter-spacing:-.02em;color:var(--v96-ink)}
.bpf-badge-num{margin:8px 0 0;display:flex;align-items:baseline;gap:6px}
.bpf-badge-num strong{font-size:34px;line-height:1;font-weight:800;letter-spacing:-.03em;color:var(--tc,var(--v96-ink))}
.bpf-badge-num span{font-size:17px;color:var(--v96-faint)}
.bpf-badge-num.is-muted strong{font-size:22px;color:var(--v96-faint)}
.bpf-badge-sub{margin:8px 0 0;font-size:13px;color:var(--v96-faint)}
.bpf-badge-foot{display:flex;align-items:center;gap:2px;padding:14px 22px;border-top:1px solid var(--v96-line);border-radius:0 0 18px 18px;background:var(--v96-band);font-size:12.5px;color:var(--v96-faint)}
.bpf-badge-foot strong{margin-left:4px;font-weight:600;color:var(--v96-text)}
.is-earned .bpf-badge-foot{background:var(--tb)}
.bpf-tick{margin-right:8px;color:var(--tc)}

.bpf-stats{display:grid;grid-template-columns:repeat(4,1fr);margin:0;padding:24px 0;list-style:none;border-top:1px solid var(--v96-soft-line)}
.bpf-stats>li{display:flex;align-items:center;justify-content:center;gap:14px;border-left:1px solid var(--v96-soft-line)}
.bpf-stats>li:first-child{justify-content:flex-start;border-left:0}
.bpf-stats>li:last-child{justify-content:flex-end}
.bpf-stat{display:flex;align-items:baseline;gap:12px;font-size:14.5px;color:var(--v96-faint)}
.bpf-stat strong{font-size:24px;font-weight:700;color:var(--v96-ink)}
.bpf-ico{display:block;flex:none;width:18px;height:18px;margin:0;color:var(--v96-faint);background:currentColor;opacity:.75;-webkit-mask:var(--m) center/contain no-repeat;mask:var(--m) center/contain no-repeat}
.bpf-ico-grid{--m:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M3 3h8v8H3zM13 3h8v8h-8zM3 13h8v8H3zM13 13h8v8h-8z'/%3E%3C/svg%3E")}
.bpf-ico-user{--m:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2'%3E%3Ccircle cx='12' cy='8' r='4'/%3E%3Cpath d='M4 21c1.5-4 4.5-6 8-6s6.5 2 8 6'/%3E%3C/svg%3E")}
.bpf-ico-up{--m:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2'%3E%3Cpath d='M6 18 18 6M9 6h9v9'/%3E%3C/svg%3E")}
.bpf-ico-star{--m:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8'%3E%3Cpath d='m12 3 2.7 5.6 6.1.9-4.4 4.3 1 6.1L12 17l-5.4 2.9 1-6.1-4.4-4.3 6.1-.9z'/%3E%3C/svg%3E")}

/* ---------- tabs ---------- */
.bpf-tabs{position:sticky;top:var(--v96-header-h);z-index:5;background:#fff;border-bottom:1px solid var(--v96-line)}
.bpf-tabs-in{display:flex;justify-content:space-between;align-items:center;gap:20px}
.bpf-tablist{display:flex;gap:clamp(18px,2vw,38px);overflow-x:auto;scrollbar-width:none}
.bpf-tablist a{flex:none;padding:24px 0 22px;border-bottom:3px solid transparent;font-size:15px;font-weight:600;color:var(--v96-text)}
.bpf-tablist a:hover{color:var(--v96-purple)}
.bpf-tablist a.is-on{border-bottom-color:var(--v96-purple);color:var(--v96-purple)}
.bpf-stay{flex:none;font-size:12.5px;color:var(--v96-faint)}
.bpf-stay span{margin-left:8px;color:var(--v96-purple)}

/* ---------- body ---------- */
.bpf-body{display:grid;grid-template-columns:minmax(0,1fr) clamp(280px,23vw,370px);gap:clamp(24px,2.6vw,42px);padding:52px 0 96px;align-items:start}
.bpf-mainc{display:grid;gap:30px;min-width:0}
.bpf-sec-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px}
.bpf-h2{margin:10px 0 0;font-size:clamp(26px,2vw,32px);font-weight:700;letter-spacing:-.03em;color:var(--v96-ink)}
.bpf-h3{margin:10px 0 0;font-size:clamp(22px,1.6vw,26px);font-weight:700;letter-spacing:-.025em;color:var(--v96-ink)}
.bpf-h4{margin:10px 0 0;font-size:21px;font-weight:700;letter-spacing:-.02em;color:var(--v96-ink)}
.bpf-filters{display:flex;flex-wrap:wrap;gap:10px;margin-top:24px}
.bpf-filter{padding:9px 15px;border:1px solid var(--v96-line);border-radius:8px;background:#fff;font:inherit;font-size:13.5px;color:var(--v96-body);cursor:pointer}
.bpf-filter:hover{border-color:var(--v96-soft-line);color:var(--v96-purple)}
.bpf-filter.is-on{border-color:var(--v96-soft-line);background:var(--v96-soft);color:var(--v96-purple);font-weight:600}
.bpf-filter.is-on .bpf-count{background:#fff}
.bpf-empty-line{margin:24px 0 0;color:var(--v96-faint)}

.bpf-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin-top:26px}
.bpf-card{display:flex;flex-direction:column;border:1px solid var(--v96-line);border-radius:14px;background:#fff;overflow:hidden;transition:box-shadow .2s,border-color .2s}
.bpf-card:hover{border-color:var(--v96-soft-line);box-shadow:var(--v96-shadow)}
.bpf-card[hidden]{display:none}
.bpf-shot{display:block;margin:14px 14px 0;border-radius:8px;overflow:hidden;background:var(--v96-tint);aspect-ratio:2/1}
.bpf-shot img{width:100%;height:100%;object-fit:cover;object-position:top;display:block}
.bpf-card-body{flex:1;display:flex;flex-direction:column;padding:22px 24px 20px}
.bpf-card-top{display:flex;justify-content:space-between;align-items:center;gap:10px}
.bpf-cat{font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--v96-faint)}
.bpf-tool{padding:3px 8px;border:1px solid var(--v96-line);border-radius:6px;font-size:11.5px;color:var(--v96-body)}
.bpf-card-title{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-top:18px;font-size:clamp(20px,1.4vw,25px);font-weight:600;letter-spacing:-.02em;color:var(--v96-ink)}
.bpf-card-title:hover span:first-child{color:var(--v96-purple)}
.bpf-price{font-weight:700}
.bpf-tagline{margin:14px 0 0;font-size:15px;line-height:1.65;color:var(--v96-body)}
.bpf-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:auto;padding-top:26px}
.bpf-tag{padding:4px 9px;border:1px solid var(--v96-line);border-radius:6px;font-size:12px;color:var(--v96-body)}
.bpf-tag.is-audit{border-color:var(--v96-soft-line);background:var(--v96-soft);color:var(--v96-purple)}
.bpf-db{margin:22px 0 0;padding-top:18px;border-top:1px solid var(--v96-line);font-size:13px;color:var(--v96-faint)}
.bpf-card-foot{display:flex;justify-content:space-between;align-items:center;margin-top:18px;padding-top:16px;border-top:1px solid var(--v96-line);font-size:12px;color:var(--v96-faint)}
.bpf-card-foot a{font-size:14px;font-weight:600;color:var(--v96-purple)}

.bpf-panel{padding:clamp(24px,2vw,34px);border:1px solid var(--v96-line);border-radius:14px;background:#fff}
.bpf-facts{display:grid;grid-template-columns:1fr 1.2fr .8fr;gap:24px;margin-top:26px;padding-top:24px;border-top:1px solid var(--v96-line)}
.bpf-facts p{margin:6px 0 0;font-size:14.5px;color:var(--v96-text)}
.bpf-facts .bpf-mini{margin:0 0 12px;font-size:10.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--v96-eyebrow)}
.bpf-pill{padding:5px 11px;border:1px solid var(--v96-line);border-radius:999px;font-size:12px;color:var(--v96-faint)}

.bpf-empty{padding:40px 0 18px;text-align:center}
.bpf-empty-ico{display:inline-grid;place-items:center;width:58px;height:58px;border:1px solid var(--v96-soft-line);border-radius:12px;background:var(--v96-soft);color:var(--v96-purple);font-size:24px}
.bpf-empty-t{margin:22px 0 0;font-size:20px;font-weight:700;color:var(--v96-ink)}
.bpf-empty-s{margin:14px 0 0;font-size:15px;line-height:1.7;color:var(--v96-body)}
.bpf-empty-f{margin:20px 0 0;font-size:12px;color:var(--v96-faint)}
.bpf-revs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:24px}
.bpf-rev{padding:20px;border:1px solid var(--v96-line);border-radius:12px}
.bpf-rev-top{display:flex;justify-content:space-between;margin:0;font-size:13px}
.bpf-stars{color:#E8A317;letter-spacing:2px}
.bpf-verified{color:var(--v96-green);font-weight:600}
.bpf-rev-t{margin:12px 0 0;font-weight:700;color:var(--v96-ink)}
.bpf-rev-b{margin:8px 0 0;font-size:14.5px;line-height:1.65;color:var(--v96-body)}
.bpf-rev-who{margin:12px 0 0;font-size:12.5px;color:var(--v96-faint)}

.bpf-guide{display:grid;grid-template-columns:1fr 1fr;margin-top:26px}
.bpf-guide>div{padding-right:28px}
.bpf-guide>div+div{padding:0 0 0 28px;border-left:1px solid var(--v96-line)}
.bpf-guide-h{display:flex;align-items:center;gap:12px;margin:0;font-size:17px;font-weight:600;color:var(--v96-ink)}
.bpf-guide-ico{color:var(--v96-purple)}
.bpf-ladder{display:flex;flex-wrap:wrap;gap:10px;margin:20px 0 0;padding:0;list-style:none}
.bpf-ladder li{display:flex;flex-direction:column;align-items:center;gap:6px;font-size:11.5px;font-weight:600;color:var(--v96-faint)}
.bpf-ladder img{width:48px;height:48px;display:block}
.bpf-ladder .is-locked img{opacity:.45;filter:grayscale(.55)}
.bpf-ladder .is-current span:not(.bpf-vh){padding:1px 7px;border-radius:5px;background:var(--v96-purple);color:#fff}
.bpf-ladder .is-current img{filter:drop-shadow(0 6px 10px rgba(118,36,244,.35))}
.bpf-ladder .is-earned span{color:var(--v96-text)}
.bpf-guide-note{margin:26px 0 0;padding-top:18px;border-top:1px solid var(--v96-line);font-size:12.5px;color:var(--v96-faint)}

/* ---------- sidebar ---------- */
.bpf-side{display:grid;gap:22px}
.bpf-box{padding:26px 24px;border:1px solid var(--v96-line);border-radius:14px;background:#fff}
.bpf-rep{display:flex;justify-content:space-between;align-items:baseline;margin-top:26px;font-size:13px;color:var(--v96-faint)}
.bpf-rep-num{font-size:22px;font-weight:700;color:var(--v96-ink)}
.bpf-rep-num small{margin-left:2px;font-size:12px;font-weight:500;color:var(--v96-faint)}
.bpf-bar{display:block;width:100%;height:6px;margin-top:14px;border:0;border-radius:6px;background:var(--v96-line);overflow:hidden;-webkit-appearance:none;appearance:none}
.bpf-bar::-webkit-progress-bar{background:var(--v96-line);border-radius:6px}
.bpf-bar::-webkit-progress-value{background:linear-gradient(90deg,#9B6BFF,var(--v96-purple));border-radius:6px}
.bpf-bar::-moz-progress-bar{background:linear-gradient(90deg,#9B6BFF,var(--v96-purple));border-radius:6px}
.bpf-rep-note{margin:12px 0 0;font-size:13px;color:var(--v96-faint)}
.bpf-rows{margin:18px 0 0}
.bpf-rows>div{display:flex;justify-content:space-between;gap:12px;padding:13px 0;border-top:1px solid var(--v96-line);font-size:13px}
.bpf-rows dt{color:var(--v96-faint)}
.bpf-rows dd{margin:0;font-weight:600;color:var(--v96-text)}
.bpf-link{display:inline-block;margin-top:18px;font-size:13.5px;font-weight:600;color:var(--v96-purple)}
.bpf-keep{border-color:var(--v96-soft-line);background:linear-gradient(180deg,#F7F2FF,#FBF8FF)}
.bpf-shield{display:grid;place-items:center;width:30px;height:34px;border-radius:9px 9px 15px 15px;background:var(--v96-soft-line);color:var(--v96-purple);font-size:15px;font-weight:700}
.bpf-keep .bpf-h4{margin-top:22px}
.bpf-checks{margin:18px 0 0;padding:0;list-style:none}
.bpf-checks li{margin:10px 0 0;padding-left:20px;position:relative;font-size:13px;color:var(--v96-body)}
.bpf-checks li::before{content:"✓";position:absolute;left:0;color:var(--v96-purple)}
.bpf-fine{margin:20px 0 0;padding-top:16px;border-top:1px solid var(--v96-soft-line);font-size:12px;line-height:1.6;color:var(--v96-faint)}
.bpf-dashed{border-style:dashed}

/* the builder's own goals */
.bpf-goals{border-color:var(--v96-soft-line);box-shadow:0 18px 40px -30px rgba(118,36,244,.55)}
.bpf-goal{margin-top:20px;padding-top:18px;border-top:1px solid var(--v96-line)}
.bpf-goal-k{margin:0;font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--v96-faint)}
.bpf-goal-v{margin:8px 0 0;font-size:15px;color:var(--v96-body)}
.bpf-goal-v strong{font-size:22px;color:var(--v96-ink)}
.bpf-goal-s{margin:8px 0 0;font-size:13px;line-height:1.55;color:var(--v96-faint)}
.bpf-next{display:flex;gap:14px;align-items:center;margin-top:10px}
.bpf-next img{flex:none;width:56px;height:56px;opacity:.6;filter:grayscale(.3)}
.bpf-next-t{margin:0;font-size:15px;font-weight:700;color:var(--v96-ink)}
.bpf-next .bpf-goal-s{margin-top:4px}

/* ---------- smaller screens ---------- */
@media (max-width:1180px){
  .bpf-hero-grid{grid-template-columns:1fr}
  .bpf-body{grid-template-columns:1fr}
  .bpf-side{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
}
@media (max-width:760px){
  .bpf-badges,.bpf-cards,.bpf-revs,.bpf-guide{grid-template-columns:1fr}
  .bpf-guide>div{padding:0}.bpf-guide>div+div{margin-top:26px;padding:26px 0 0;border-left:0;border-top:1px solid var(--v96-line)}
  .bpf-stats{grid-template-columns:1fr 1fr;row-gap:18px}
  .bpf-stats>li,.bpf-stats>li:first-child,.bpf-stats>li:last-child{justify-content:flex-start;border-left:0}
  .bpf-facts{grid-template-columns:1fr}
  .bpf-stay{display:none}
  .bpf-avatar{width:76px;height:76px;font-size:32px;border-radius:18px}
  .bpf-badge-body{gap:14px}
}
#projects,#about,#reviews,#badges{scroll-margin-top:calc(var(--v96-header-h) + 90px)}
.bpf-vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* 351: the builder's uploaded picture or logo */
img.bpf-avatar{object-fit:cover;background:#fff}
