/* ============================================================
   VetCo bundle — the multi-buy offer, its picker, and the strip
   that advertises it on the page. Everything is .vb- prefixed so
   it can't collide with the finder's .vf- rules or the site's own.
   ============================================================ */

/* ---- the strip that sits in the page (shop and home) ---- */
.vb-strip{
  display:flex;align-items:center;justify-content:space-between;gap:26px;flex-wrap:wrap;
  background:linear-gradient(120deg,var(--brand) 0%,var(--brand-2) 100%);
  color:#fff;border-radius:var(--radius);padding:26px 30px;
}
.vb-strip h3{color:#fff;margin:0 0 4px;font-size:1.35rem}
.vb-strip p{margin:0;color:rgba(255,255,255,.78);font-size:.95rem;max-width:52ch}
.vb-strip-actions{display:flex;gap:12px;flex-wrap:wrap}
.vb-pill{
  background:#fff;color:var(--ink);border:0;border-radius:999px;
  padding:12px 22px;font:inherit;font-size:.94rem;font-weight:500;cursor:pointer;
  white-space:nowrap;transition:transform .18s,background .2s;
}
.vb-pill:hover{background:#eae5dc;transform:translateY(-2px)}
.vb-pill.ghost{background:transparent;color:#fff;border:1px solid rgba(255,255,255,.5)}
.vb-pill.ghost:hover{background:rgba(255,255,255,.14)}
@media(max-width:600px){
  .vb-strip{padding:22px}
  .vb-strip-actions{width:100%}
  .vb-pill{flex:1 1 auto;text-align:center}
}

/* the one-line nudge under a price */
.vb-hint{
  display:inline-block;background:var(--paper-2);border:1px solid var(--line);
  border-radius:999px;padding:6px 14px;font-size:.86rem;color:var(--ink-soft);
}
.vb-hint b{color:var(--ink);font-weight:600}
.vb-hint button,.vb-hint a{
  background:none;border:0;padding:0;font:inherit;color:var(--brand-2);font-weight:600;
  cursor:pointer;text-decoration:underline;text-underline-offset:3px;
}

/* ---- the overlay ---- */
.vb-overlay{
  position:fixed;inset:0;z-index:210;
  /* flex + margin:auto on the child, not place-items:center — a centred grid clips
     the top of anything taller than the viewport and you can't scroll back to it */
  display:flex;padding:24px 20px;
  background:radial-gradient(ellipse at 50% 20%,rgba(24,46,38,.88),rgba(8,11,10,.97) 70%);
  -webkit-backdrop-filter:blur(26px) saturate(.7);
  backdrop-filter:blur(26px) saturate(.7);
  opacity:0;transition:opacity .4s ease;overflow-y:auto;
}
.vb-overlay.on{opacity:1}
.vb-overlay[hidden]{display:none}

.vb-close{
  position:fixed;top:16px;right:20px;z-index:2;
  background:none;border:0;color:rgba(255,255,255,.75);
  font-size:1.9rem;line-height:1;cursor:pointer;padding:6px 10px;border-radius:8px;
}
.vb-close:hover{color:#fff;background:rgba(255,255,255,.1)}

.vb-inner{
  width:min(720px,100%);margin:auto;text-align:center;color:#fff;
  animation:vbRise .5s cubic-bezier(.2,.7,.3,1) both;
}
/* The picking step is all photographs, so it gets the extra width — the same
   trick the finder's reader uses. Set by stepPick(), cleared by stepOffer(). */
.vb-inner.picking{width:min(1020px,100%)}
@keyframes vbRise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}

.vb-step{font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;color:#9fd3bf;margin-bottom:10px}
.vb-q{font-family:"Fraunces",Georgia,serif;font-size:clamp(1.35rem,3.2vw,1.95rem);
  line-height:1.15;margin:0 0 8px}
.vb-sub{color:rgba(255,255,255,.72);font-size:.93rem;margin:0 auto 26px;max-width:52ch}
.vb-inner.picking .vb-sub{margin-bottom:18px}

/* ---- step 1: the two tiers ---- */
.vb-tiers{display:grid;gap:16px;grid-template-columns:1fr 1fr}
@media(max-width:560px){.vb-tiers{grid-template-columns:1fr}}
.vb-tier{
  display:flex;align-items:center;gap:18px;text-align:left;
  background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.18);
  border-radius:16px;padding:22px 20px;cursor:pointer;color:#fff;font:inherit;
  transition:transform .2s,background .2s,border-color .2s;
}
.vb-tier:hover,.vb-tier:focus-visible{
  background:rgba(255,255,255,.14);border-color:#9fd3bf;transform:translateY(-3px);outline:none;
}
.vb-tier-n{
  flex:0 0 auto;width:52px;height:52px;border-radius:50%;
  display:grid;place-items:center;background:rgba(159,211,191,.18);
  font-family:"Fraunces",Georgia,serif;font-size:1.6rem;color:#9fd3bf;
}
.vb-tier-body{display:block}
.vb-tier b{display:block;font-weight:600;font-size:1rem;margin-bottom:2px}
.vb-tier-price{
  display:block;font-family:"Fraunces",Georgia,serif;font-size:1.5rem;line-height:1.2;
}
.vb-tier-price s{font-family:"Inter",sans-serif;font-size:.85rem;color:rgba(255,255,255,.5);margin-left:8px}
.vb-tier em{font-style:normal;font-size:.85rem;color:#9fd3bf}

/* ---- step 2: the picker ---- */
.vb-slots{display:flex;justify-content:center;gap:14px;margin:0 0 18px}
.vb-slot{
  position:relative;width:clamp(84px,20vw,108px);aspect-ratio:1;border-radius:12px;
  background-size:cover;background-position:center;border:1px dashed rgba(255,255,255,.3);
  display:grid;place-items:center;padding:0;color:#fff;font:inherit;
}
.vb-slot .vb-slot-n{font-family:"Fraunces",Georgia,serif;font-size:1.3rem;color:rgba(255,255,255,.35)}
.vb-slot.is-filled{
  border:1px solid rgba(255,255,255,.55);cursor:pointer;
  box-shadow:0 14px 30px -14px rgba(0,0,0,.9);
  transition:transform .2s;
}
.vb-slot.is-filled:hover,.vb-slot.is-filled:focus-visible{transform:translateY(-3px);outline:none}
.vb-slot-name{
  position:absolute;left:0;right:0;bottom:0;padding:14px 6px 5px;font-size:.72rem;
  background:linear-gradient(transparent,rgba(0,0,0,.75));border-radius:0 0 11px 11px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.vb-x{
  position:absolute;top:5px;right:6px;width:22px;height:22px;border-radius:50%;
  background:rgba(0,0,0,.55);display:grid;place-items:center;font-size:1rem;line-height:1;
}
.vb-slot.is-filled:hover .vb-x{background:rgba(0,0,0,.8)}

.vb-grid{
  display:grid;gap:14px;grid-template-columns:repeat(5,1fr);margin-bottom:24px;
}
@media(max-width:620px){.vb-grid{grid-template-columns:repeat(3,1fr);gap:10px}}
.vb-tile{
  background:none;border:0;padding:0;cursor:pointer;color:#fff;font:inherit;position:relative;
  transition:transform .2s,opacity .2s;
}
.vb-tile:hover,.vb-tile:focus-visible{transform:translateY(-4px);outline:none}
.vb-tile i{
  display:block;width:100%;aspect-ratio:1;border-radius:10px;margin-bottom:7px;
  background-size:cover;background-position:center;
  box-shadow:0 0 0 1px rgba(255,255,255,.18), 0 10px 22px -12px rgba(0,0,0,.9);
  transition:box-shadow .2s;
}
.vb-tile:hover i,.vb-tile:focus-visible i{box-shadow:0 0 0 2px #9fd3bf, 0 14px 26px -12px rgba(0,0,0,.9)}
.vb-tile.on i{box-shadow:0 0 0 2px #9fd3bf, 0 14px 26px -12px rgba(0,0,0,.9)}
.vb-tile em{font-style:normal;font-size:.78rem;line-height:1.25;display:block;min-height:2.5em}
.vb-tile small{font-size:.68rem;letter-spacing:.12em;color:rgba(255,255,255,.5)}
/* every slot taken — the tiles stay legible but stop taking new picks */
.vb-tile.is-full{opacity:.45;cursor:default}
.vb-tile.is-full:hover{transform:none}
.vb-tile.is-full.on{opacity:1}
.vb-badge{
  position:absolute;top:-6px;right:-6px;min-width:22px;height:22px;padding:0 6px;
  border-radius:999px;background:#9fd3bf;color:#12241d;font-size:.75rem;font-weight:600;
  display:grid;place-items:center;
}
.vb-badge[hidden]{display:none}

.vb-bar{
  display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;
  background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.16);
  border-radius:16px;padding:16px 20px;text-align:left;
}
/* Ten notebooks at a readable size are taller than a laptop screen, so the total
   and the button pin to the bottom of the overlay instead of falling below the
   fold. Opaque, not the usual 7% white — it sits over scrolling photographs. */
.vb-inner.picking .vb-bar{
  position:sticky;bottom:0;z-index:3;
  background:rgba(14,22,18,.94);border-color:rgba(255,255,255,.22);
  -webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);
  box-shadow:0 18px 40px -18px rgba(0,0,0,.9);
}
.vb-sum strong{display:block;font-family:"Fraunces",Georgia,serif;font-size:1.6rem;line-height:1.1}
.vb-sum span{font-size:.85rem;color:rgba(255,255,255,.68)}
.vb-sum s{color:rgba(255,255,255,.45);margin-right:6px}
.vb-btn{
  background:#fff;color:#12161c;border:0;border-radius:999px;padding:13px 26px;
  font:inherit;font-weight:500;cursor:pointer;transition:transform .18s,background .2s;
}
.vb-btn:hover:not(:disabled){transform:translateY(-2px);background:#eae5dc}
.vb-btn:disabled{opacity:.45;cursor:default}
@media(max-width:520px){
  .vb-bar{flex-direction:column;align-items:stretch;text-align:center}
  .vb-btn{width:100%}
}

.vb-note{font-size:.82rem;color:rgba(255,255,255,.6);margin:12px 0 0}
.vb-note[hidden]{display:none}

.vb-links{display:flex;gap:22px;justify-content:center;flex-wrap:wrap}
.vb-skip{
  display:inline-block;margin-top:20px;background:none;border:0;cursor:pointer;font:inherit;
  color:rgba(255,255,255,.6);font-size:.9rem;text-decoration:underline;text-underline-offset:4px;
}
.vb-skip:hover{color:#fff}

@media(prefers-reduced-motion:reduce){
  .vb-overlay,.vb-inner,.vb-tier,.vb-tile,.vb-btn,.vb-slot,.vb-pill{
    transition:none!important;animation:none!important;
  }
}
