/* =========================================================
   AISIN STUDIO · COMPONENTES (filtros, cards de set, paginación, botones, carrito)
========================================================= */
/* ---------- FILTERS ---------- */
#controls{position:relative;z-index:2;margin-bottom:var(--gap)}
/* aligned to the card grid: each control is exactly one card wide */
#controls .filters{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));column-gap:var(--gap);row-gap:12px}
.select{
  position:relative;grid-column:span 1;min-width:0;height:var(--h-md);display:flex;align-items:center;gap:6px;padding:0 10px;
  border:1px solid var(--line);background:var(--surface-1);border-radius:var(--r);cursor:pointer;
  font:600 14px/1 var(--f-cond);letter-spacing:.04em;color:var(--text);transition:border-color .15s;
}
.select:hover{border-color:var(--line-strong)}
.select[aria-expanded="true"]{border-color:var(--red)}
.select > span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sel-ic{width:18px;height:18px;flex:none;display:block}
.select.picked .sel-ic{display:none}   /* a chosen value needs the room more than the icon */
.select .chev{margin-left:auto;width:12px;height:12px;flex:none;stroke:var(--muted);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;transition:transform .2s}
.select[aria-expanded="true"] .chev{transform:rotate(180deg)}
#sortSel{grid-column:-2 / -1}
#tierLabel{display:flex;align-items:center}
.tdot{width:8px;height:8px;border-radius:50%;display:inline-block;flex:none;margin-right:8px}
.tdot.pure{background:var(--pure)}.tdot.desire{background:var(--desire)}.tdot.forbidden{background:var(--forbidden)}

.menu{position:absolute;left:-1px;top:calc(100% + 6px);min-width:max(calc(100% + 2px),220px);max-height:320px;overflow:auto;z-index:40;padding:4px 0;cursor:default}
.menu[hidden]{display:none}
#sortSel .menu{left:auto;right:-1px}
.menu button{
  display:flex;justify-content:space-between;align-items:center;gap:16px;width:100%;text-align:left;padding:10px 14px;
  font:600 15px/1.2 var(--f-cond);letter-spacing:.05em;color:var(--text-2);
}
.menu button:hover{background:var(--red-tint);color:var(--text)}
.menu button.sel{color:var(--red)}
.menu button span{color:var(--muted);font-weight:500;font-variant-numeric:tabular-nums}
.menu button .lbl{display:flex;align-items:center;color:inherit;font-weight:inherit}
/* universes: alphabetical columns */
#uniMenu{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:2px 4px;width:min(760px,calc(100vw - 2 * var(--pad-x)));max-height:min(65vh,560px);padding:8px}
#uniMenu[hidden]{display:none}
#uniMenu button{padding:9px 12px;border-radius:var(--r-sm)}
#uniMenu button span{color:var(--red)}   /* card count per universe */
#uniMenu button:first-child{grid-column:1 / -1;border-bottom:1px solid var(--line);border-radius:0;margin-bottom:4px}

/* ---------- GRID / CARDS ---------- */
.grid{position:relative;z-index:1;display:grid;grid-template-columns:repeat(9,minmax(0,1fr));gap:var(--gap)}
.card{
  /* 8:11 = misma proporción que el arte (1920x2640). Sin borde: el arte ya trae su marco, nombre, drop, código y tier */
  position:relative;aspect-ratio:8/11;overflow:hidden;isolation:isolate;container-type:inline-size;
  border:0;border-radius:var(--r);background:var(--surface-2);cursor:pointer;text-align:left;
  transition:transform .2s ease;
}
.card:hover{transform:translateY(-3px)}
.card.t-pure{border-color:var(--pure)}
.card.t-desire{border-color:var(--desire)}
.card.t-forbidden{border-color:var(--forbidden)}
.card .art{position:absolute;inset:0;z-index:-2;background-size:cover;background-position:center}
.card.sold .art{filter:grayscale(.75) brightness(.55)}
.card .mono{position:absolute;inset:0;z-index:-1;display:grid;place-items:center;font:400 96px/1 var(--f-display);font-size:58cqi;color:rgba(255,255,255,.06);transform:rotate(-8deg)}

.badge{display:inline-flex;align-items:center;height:18px;padding:0 6px;border-radius:var(--r-sm);font:700 11px/1 var(--f-cond);letter-spacing:.08em;background:rgba(0,0,0,.85);color:var(--text)}
.badge.t-pure{background:var(--pure);color:#000}
.badge.t-desire{background:var(--desire);color:#000}
.badge.t-forbidden{background:var(--forbidden);color:#fff}
.card .badge{position:absolute;top:8px;right:8px}
.card .owned{position:absolute;left:8px;top:8px;display:inline-flex;align-items:center;height:18px;padding:0 6px;border-radius:var(--r-sm);background:#fff;color:#000;font:700 11px/1 var(--f-cond);letter-spacing:.06em}

/* footer: character on its own line, drop name + code share the line below at the same size */
.tl{font-weight:inherit;color:inherit}

.empty{grid-column:1 / -1;border:1px dashed var(--line);border-radius:var(--r-lg);padding:56px 24px;text-align:center}
.empty h3{font:400 28px/1.1 var(--f-display);letter-spacing:.01em;text-transform:uppercase;color:var(--text);margin-bottom:8px}
.empty p{color:var(--muted);font-size:15px;line-height:1.5;max-width:44ch;margin:0 auto 20px}
.empty button{
  display:inline-flex;align-items:center;height:var(--h-md);padding:0 18px;border:1px solid var(--red);border-radius:var(--r);
  font:600 15px/1 var(--f-cond);letter-spacing:var(--ls-ui);text-transform:uppercase;color:var(--red);transition:background .15s;
}
.empty button:hover{background:var(--red-tint)}

/* ---------- PAGINATION ---------- */
.pager{position:relative;z-index:1;display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:6px;margin-top:32px}
.pager button,.pager span{
  min-width:var(--h-sm);height:var(--h-sm);padding:0 10px;display:inline-flex;align-items:center;justify-content:center;
  border:1px solid var(--line);background:var(--surface-1);border-radius:var(--r);
  font:600 14px/1 var(--f-cond);letter-spacing:.04em;color:var(--text-2);font-variant-numeric:tabular-nums;transition:border-color .15s,color .15s;
}
.pager span{border:0;background:none;color:var(--muted);letter-spacing:.12em;padding:0 4px;min-width:0}
.pager button:hover:not(:disabled){border-color:var(--line-strong);color:var(--text)}
.pager button.cur{background:var(--red);border-color:var(--red);color:#fff}
.pager button:disabled{opacity:.35;cursor:default}
.pager .nx{gap:6px;padding:0 12px;letter-spacing:var(--ls-ui)}
.pager .nx svg{width:12px;height:12px}

/* ---------- BUTTONS ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;height:var(--h-lg);padding:0 20px;
  border:1px solid var(--red);border-radius:var(--r);background:transparent;white-space:nowrap;
  font:600 16px/1 var(--f-cond);letter-spacing:var(--ls-ui);text-transform:uppercase;color:var(--red);
  transition:background-color .15s,border-color .15s,color .15s,filter .15s;
}
.btn:hover:not(:disabled){background:var(--red-tint);background:color-mix(in srgb,currentColor 12%,transparent)}
.btn.solid{background:var(--red);color:#fff}
.btn.solid:hover:not(:disabled){background:var(--red);filter:brightness(1.12)}
.btn.ghost{border-color:var(--line);color:var(--text-2)}
.btn.ghost:hover:not(:disabled){border-color:var(--line-strong);color:var(--text);background:transparent}

.btn:disabled{background:var(--surface-2);border-color:var(--line);color:var(--muted);cursor:default;filter:none}
/* ---------- CART DRAWER ---------- */
.drawer-bg{position:fixed;inset:0;z-index:70;background:rgba(0,0,0,.7);opacity:0;pointer-events:none;transition:opacity .25s}
.drawer-bg.open{opacity:1;pointer-events:auto}
.drawer{
  position:fixed;top:0;right:0;bottom:0;z-index:71;width:min(400px,100%);display:flex;flex-direction:column;
  background:var(--surface-1);border-left:1px solid var(--line);box-shadow:var(--shadow-pop);
  padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px);
  transform:translateX(100%);visibility:hidden;transition:transform .3s ease,visibility 0s linear .3s;
}
.drawer.open{transform:none;visibility:visible;transition:transform .3s ease}
.drawer-head{display:flex;justify-content:space-between;align-items:center;padding:16px 16px 16px 24px;border-bottom:1px solid var(--line-soft)}
.drawer-head h3{font:400 24px/1 var(--f-display);letter-spacing:.02em}
.drawer-head .m-close{position:static}
.drawer-body{flex:1;overflow:auto;padding:0 24px}
.cart-row{display:grid;grid-template-columns:54px minmax(0,1fr) auto;gap:16px;align-items:center;padding:16px 0;border-bottom:1px solid var(--line-soft)}
.cart-thumb{width:54px;aspect-ratio:8/11;border-radius:var(--r-sm);border:0;background-size:cover;background-position:center}
.cart-thumb.t-pure{border-color:var(--pure)}.cart-thumb.t-desire{border-color:var(--desire)}.cart-thumb.t-forbidden{border-color:var(--forbidden)}
.cart-name{font:400 16px/1.1 var(--f-display);text-transform:uppercase;letter-spacing:.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cart-meta{display:flex;gap:8px;align-items:center;margin-top:6px;font:600 13px/1 var(--f-cond);letter-spacing:.04em;color:var(--muted);font-variant-numeric:tabular-nums}
.cart-meta .badge{position:static}
.qty{display:inline-flex;align-items:center;margin-top:10px;border:1px solid var(--line);border-radius:var(--r)}
.qty button{width:var(--h-xs);height:var(--h-xs);display:grid;place-items:center;color:var(--text-2);font-size:16px;line-height:1;transition:color .15s}
.qty button:hover:not(:disabled){color:var(--text)}
.qty button:disabled{opacity:.3;cursor:default}
.qty span{min-width:24px;text-align:center;font:600 14px/1 var(--f-cond);font-variant-numeric:tabular-nums}
.cart-price{text-align:right;font:600 18px/1 var(--f-cond);font-variant-numeric:tabular-nums}
.cart-rm{display:block;margin:10px 0 0 auto;font:600 12px/1 var(--f-cond);letter-spacing:.08em;color:var(--muted);transition:color .15s}
.cart-rm:hover{color:var(--red)}
.cart-empty{padding:56px 0;text-align:center;color:var(--muted);font-size:14px}
.cart-empty b{display:block;font:400 24px/1.1 var(--f-display);text-transform:uppercase;color:var(--text);margin-bottom:8px;letter-spacing:.01em}
.drawer-foot{padding:20px 24px 24px;border-top:1px solid var(--line-soft)}
.subtotal{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:16px;font:600 14px/1 var(--f-cond);letter-spacing:var(--ls-label);color:var(--muted)}
.subtotal b{font:400 28px/1 var(--f-display);color:var(--text);letter-spacing:.01em;font-variant-numeric:tabular-nums}
#checkout{width:100%}


/* ---------- ADDED: set cards (one card per character set) ---------- */
a.card{display:block;color:inherit;text-decoration:none}
a.btn{text-decoration:none}
.card img.art{width:100%;height:100%;object-fit:cover;display:block}
.card .badge{top:8px;left:8px;right:auto}
.card .badge.tier{display:none}   /* el arte ya lleva la etiqueta del tier */
/* Progreso del set: caja negra con 3 cartitas + número, arriba al centro (entre el logo y la etiqueta del tier del arte).
   Gris = tier sin desbloquear; color del tier = desbloqueado en My Vault. Se va llenando de 0 a 3 */
.card .prog{position:absolute;top:5px;left:50%;translate:-50% 0;display:flex;align-items:center;gap:clamp(1px,1cqi,2px);
  padding:clamp(1.5px,1cqi,2px);border-radius:clamp(2px,1.4cqi,3px);background:#000;pointer-events:none;box-shadow:0 1px 3px rgba(0,0,0,.5)}
.card .prog i{width:clamp(4px,3.25cqi,6.5px);aspect-ratio:8/11;border-radius:1px;background:#8c8c8c;transition:background-color .3s}
.card .prog i.on.pure{background:#fff}.card .prog i.on.desire{background:var(--desire)}.card .prog i.on.forbidden{background:var(--forbidden)}
.card .prog b{padding:0 1px;font:700 clamp(7px,5cqi,10px)/1 var(--f-cond);color:#fff;font-variant-numeric:tabular-nums}
.cart-thumb{position:relative;display:block;overflow:hidden}
.cart-thumb .art{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.cart-thumb .mono{display:none}
.cart-note{margin:0 0 14px;font-size:12.5px;line-height:1.5;color:var(--muted)}

/* ---------- NSFW blur ---------- */
/* Interruptor con el mismo estilo que los filtros: icono de ojo + BLUR NSFW + switch (rojo = activo) */
.nsfw-toggle{text-align:left;cursor:pointer;gap:5px;padding:0 8px}
.nsfw-toggle > span:not(.nsfw-ic){font-size:14px;letter-spacing:.03em}
#nsfwSel{grid-column:-3 / -2}
.nsfw-ic{display:grid;place-items:center;width:18px;height:18px;flex:none}
.nsfw-ic svg{width:18px;height:18px;fill:none;stroke:var(--muted);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.nsfw-toggle.on .nsfw-ic svg{stroke:var(--red)}
.nsfw-toggle .sw{position:relative;flex:none;margin-left:auto;width:24px;height:14px;border-radius:7px;background:var(--line-strong);transition:background-color .15s}
.nsfw-toggle .sw::after{content:"";position:absolute;top:2px;left:2px;width:10px;height:10px;border-radius:50%;background:var(--text-2);transition:transform .15s,background-color .15s}
.nsfw-toggle.on .sw{background:var(--red)}
.nsfw-toggle.on .sw::after{transform:translateX(10px);background:#fff}
/* 9 columnas en pantallas de ~1360-1420 px: la card es tan estrecha que se oculta el icono para que quepa el texto */
@media (min-width:1361px) and (max-width:1439px){ .nsfw-toggle .nsfw-ic{display:none} }

/* Arte Forbidden difuminado al 80% (solo blur, sin nada encima) */
.card.nsfw .art{filter:blur(14px);transform:scale(1.12)}
.card.nsfw .mono{filter:blur(6px)}
.cart-thumb.nsfw .art{filter:blur(5px);transform:scale(1.15)}



/* Set completo (3/3): etiqueta COMPLETE, borde e indicador en morado */
.card.complete{border-color:var(--complete)}
.badge.complete{background:var(--complete);color:#fff}

/* ---------- Rotación de tiers en Collection (js/ui/grid.js · rotationWave) ----------
   Barrido de derecha a izquierda: la carta nueva se desliza por encima de la actual, con una línea de luz
   del color del tier marcando el borde. El borde de la card y la etiqueta cambian a mitad del barrido. */
.card{--wipe:2000ms;transition:transform .2s ease,border-color calc(var(--wipe) * .5) ease calc(var(--wipe) * .35)}

/* ---------- Efecto 3D con el ratón (js/ui/grid.js · Tilt) ----------
   --mx / --my = posición del puntero (-0.5 … 0.5). La card gira hasta ±15° y el arte, un poco más grande
   que la card, se desplaza al lado contrario. "translate" va aparte de "transform", así convive con el
   barrido entre tiers y con el desenfoque NSFW. */
.grid .card,.grid .card:hover{
  transform:perspective(800px) rotateY(calc(var(--mx,0) * 30deg)) rotateX(calc(var(--my,0) * -30deg));
  transition:transform 1s cubic-bezier(.445,.05,.55,.95),border-color calc(var(--wipe) * .5) ease calc(var(--wipe) * .35);
}
.grid .card{box-shadow:0 0 0 rgba(0,0,0,0)}
.grid .card.tilt{z-index:2;box-shadow:0 30px 60px rgba(0,0,0,.66);
  transition:transform .6s cubic-bezier(.23,1,.32,1),box-shadow 2s cubic-bezier(.23,1,.32,1),border-color calc(var(--wipe) * .5) ease calc(var(--wipe) * .35)}
/* el arte se ve entero (con su marco): sin agrandar ni desplazar dentro de la card; solo la card se inclina */
.card .art.is-blur{filter:blur(14px);transform:scale(1.12)}
.card .art-in{animation:wipe-in var(--wipe) cubic-bezier(.65,0,.35,1) both}
.card .art-in.is-blur{animation-name:wipe-in-blur}
@keyframes wipe-in{from{clip-path:inset(0 0 0 100%);transform:translateX(5%)}to{clip-path:inset(0 0 0 0);transform:none}}
@keyframes wipe-in-blur{from{clip-path:inset(0 0 0 100%);transform:translateX(5%) scale(1.12)}to{clip-path:inset(0 0 0 0);transform:scale(1.12)}}
.card .wipe-edge{position:absolute;top:0;bottom:0;left:100%;z-index:-2;width:2px;margin-left:-1px;pointer-events:none;
  background:var(--edge);box-shadow:0 0 10px 1px var(--edge),0 0 28px 4px color-mix(in srgb,var(--edge) 35%,transparent);
  animation:wipe-edge var(--wipe) cubic-bezier(.65,0,.35,1) both}
.card .wipe-edge.t-pure{--edge:var(--pure)} .card .wipe-edge.t-desire{--edge:var(--desire)} .card .wipe-edge.t-forbidden{--edge:var(--forbidden)}
@keyframes wipe-edge{0%{left:100%;opacity:0}12%{opacity:1}85%{opacity:1}100%{left:0;opacity:0}}
.card.sweep .badge.tier{animation:badge-in .5s ease calc(var(--wipe) * .5) both}
@keyframes badge-in{from{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}

/* ---------- REQUESTS (js/ui/requests.js) ---------- */
.requests{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,340px) minmax(0,1fr);gap:24px;align-items:start}
.rq-new{position:sticky;top:16px;padding:20px;background:var(--surface-1);border:1px solid var(--line);border-top:2px solid var(--red);border-radius:var(--r-lg)}
.rq-h{font:400 22px/1 var(--f-display);letter-spacing:.02em;margin-bottom:16px}
.rq-types{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:18px}
.rq-types button{height:var(--h-sm);padding:0 10px;border:1px solid var(--line);border-radius:var(--r);background:var(--black);
  font:600 13px/1 var(--f-cond);letter-spacing:.06em;color:var(--muted);transition:color .15s,border-color .15s,background-color .15s}
.rq-types button:hover{color:var(--text);border-color:var(--line-strong)}
.rq-types button.on{color:var(--text);border-color:var(--red);background:var(--red-tint)}
.field textarea{
  width:100%;min-height:84px;padding:10px 14px;background:var(--black);border:1px solid var(--line);border-radius:var(--r);resize:vertical;
  color:var(--text);font:400 15px/1.45 var(--f-body);outline:0;transition:border-color .15s,box-shadow .15s;
}
.field textarea::placeholder{color:#5f5f5f}
.field textarea:hover{border-color:var(--line-strong)}
.field textarea:focus{border-color:var(--red);box-shadow:0 0 0 3px var(--red-tint)}
.rq-opt{color:#5f5f5f;letter-spacing:.04em}
.rq-similar{margin:-4px 0 16px;padding:12px;border:1px solid rgba(245,197,24,.35);background:rgba(245,197,24,.05);border-radius:var(--r)}
.rq-similar > p{font-size:13px;line-height:1.4;color:var(--text);margin-bottom:6px}
.rq-sim{display:flex;align-items:center;gap:10px;padding:6px 0;border-top:1px solid var(--line-soft)}
.rq-sim span{min-width:0}
.rq-sim span b{display:block;font-weight:600;font-size:14px;line-height:1.3;overflow-wrap:anywhere}
.rq-sim span small{font-size:12px;color:var(--muted)}
.rq-sim .rq-vote{width:46px;height:46px}
.rq-sim .rq-vote b{font-size:15px}
.rq-submit{width:100%}
.rq-hint{margin-top:12px;font-size:12px;line-height:1.5;color:var(--muted)}

.rq-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.rq-chips{display:flex;flex-wrap:wrap;gap:6px}
.rq-chips button{height:var(--h-sm);padding:0 12px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface-1);
  font:600 13px/1 var(--f-cond);letter-spacing:.06em;color:var(--muted);transition:color .15s,border-color .15s}
.rq-chips button span{margin-left:4px;color:var(--red)}
.rq-chips button:hover{color:var(--text);border-color:var(--line-strong)}
.rq-chips button.on{color:var(--text);border-color:var(--red)}
.rq-sort{display:inline-flex;border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.rq-sort button{height:var(--h-sm);padding:0 14px;background:var(--surface-1);font:600 13px/1 var(--f-cond);letter-spacing:.06em;color:var(--muted)}
.rq-sort button + button{border-left:1px solid var(--line)}
.rq-sort button.on{color:var(--text);background:var(--red-tint);box-shadow:inset 0 -2px 0 var(--red)}

.rq-list{display:flex;flex-direction:column;gap:10px}
.rq-item{display:flex;gap:16px;padding:16px;background:var(--surface-1);border:1px solid var(--line);border-radius:var(--r-lg);transition:border-color .4s}
.rq-item.flash{border-color:var(--red);box-shadow:0 0 0 3px var(--red-tint)}
.rq-vote{flex:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;width:56px;height:62px;
  border:1px solid var(--line);border-radius:var(--r);background:var(--black);color:var(--muted);transition:color .15s,border-color .15s,background-color .15s}
.rq-vote svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linejoin:round}
.rq-vote b{font:600 17px/1 var(--f-cond);color:var(--text);font-variant-numeric:tabular-nums}
.rq-vote:hover:not(:disabled){color:var(--text);border-color:var(--line-strong)}
.rq-vote.on{color:var(--red);border-color:var(--red);background:var(--red-tint)}
.rq-vote.on svg{fill:var(--red)}
.rq-vote:disabled{opacity:.4;cursor:default}
.rq-body{flex:1;min-width:0}
.rq-tags{display:flex;gap:6px;margin-bottom:6px}
.rq-tag,.rq-status{display:inline-flex;align-items:center;height:18px;padding:0 6px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface-2);
  font:700 11px/1 var(--f-cond);letter-spacing:.08em;text-transform:uppercase;color:var(--text-2)}
.s-planned .rq-status{background:var(--desire);border-color:var(--desire);color:#000}
.s-released .rq-status{background:var(--complete);border-color:var(--complete);color:#fff}
.s-declined .rq-status{color:var(--muted)}
.s-declined h3{color:var(--muted);text-decoration:line-through}
.rq-body h3{font:400 20px/1.15 var(--f-display);letter-spacing:.01em;text-transform:uppercase;overflow-wrap:anywhere}
.rq-body p{margin-top:6px;font-size:14px;line-height:1.5;color:var(--text-2);white-space:pre-line;overflow-wrap:anywhere}
.rq-body small{display:block;margin-top:8px;font-size:12px;color:var(--muted)}
.rq-del{font-size:12px;color:var(--muted);text-decoration:underline;text-underline-offset:2px}
.rq-del:hover{color:var(--red)}
.rq-loading{padding:32px 0;color:var(--muted)}
.rq-more{width:100%;margin-top:4px}
@media (max-width:900px){
  .requests{grid-template-columns:minmax(0,1fr)}
  .rq-new{position:static}
}

/* ---------- Estado del tier en las cards (js/ui/grid.js · tierFlags) ----------
   My Vault: los tiers que aún no tienes se ven en blanco y negro con un candado y LOCKED.
   Collection: los tiers que ya tienes llevan la etiqueta IN VAULT.
   Ambos cambian a mitad del barrido entre tiers, igual que el borde. */
.card .lockover{position:absolute;inset:0;z-index:-1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;
  padding:0 12% 18%;text-align:center;pointer-events:none;background:rgba(0,0,0,.5);
  -webkit-backdrop-filter:grayscale(1) brightness(.75);backdrop-filter:grayscale(1) brightness(.75);
  opacity:0;transition:opacity calc(var(--wipe) * .5) ease calc(var(--wipe) * .35)}
.card.locked .lockover{opacity:1}
.card .lockover svg{width:26cqi;max-width:44px;height:auto;fill:none;stroke:#fff;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.card .lockover span{font:600 16px/1 var(--f-cond);font-size:clamp(12px,9cqi,18px);letter-spacing:.16em;color:#fff}
.card .lockover small{font:500 11px/1.3 var(--f-body);font-size:clamp(10px,5.5cqi,12px);color:var(--text-2)}
.card .invault{position:absolute;top:30px;left:8px;display:inline-flex;align-items:center;gap:3px;height:18px;padding:0 6px 0 4px;border-radius:var(--r-sm);
  background:rgba(0,0,0,.8);box-shadow:inset 0 0 0 1px rgba(255,255,255,.45);font:700 11px/1 var(--f-cond);letter-spacing:.06em;color:#fff;
  opacity:0;transition:opacity calc(var(--wipe) * .5) ease calc(var(--wipe) * .35)}
.card.has .invault{opacity:1}
.card .invault svg{width:11px;height:11px;fill:none;stroke:#fff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
@container (max-width:150px){ .card .lockover small{display:none} }
