/* Jupá · Proveedores (panel de la pareja) y piezas compartidas con el panel del proveedor (pv-*).
   Variables de tokens.css; botones de auth.css; barra y hojas de shell.css. */
.pv-body,.pp-body{background:var(--paper);color:var(--ink)}
:root:has(.tb-l.on[data-k=inicio]):has(main.pv) .jsec::before{content:"Proveedores"}
.pv{box-sizing:border-box;max-width:1180px;margin:0 auto;padding:clamp(18px,3vw,32px) clamp(16px,4vw,40px) 64px;display:grid;grid-template-columns:minmax(0,1fr);gap:16px}
.pv>*{min-width:0}
.pv[aria-busy=true] .pv-grid{opacity:.5}

/* ——— Encabezado ——— */
.pv-k{display:flex;align-items:center;gap:7px;margin:0 0 8px;font:600 12.5px/1.2 var(--font-body);letter-spacing:.14em;text-transform:uppercase;color:var(--violet)}
.pv-head h1,.pp-new h1,.pp-pitch h1{margin:0 0 8px;font:500 clamp(30px,4.2vw,50px)/.98 var(--font-display);text-transform:uppercase;letter-spacing:-.01em}
.pv-head h1 em,.pp-new h1 em,.pp-pitch h1 em,.pv-empty h2 em{font:400 1.04em/1 var(--font-accent);font-style:italic;text-transform:none;color:var(--violet)}
.pv-lead{margin:0;max-width:600px;color:var(--muted);font-size:16px;line-height:1.5}

/* ——— Pestañas (segmentado) ——— */
.pv-seg{display:flex;gap:4px;padding:4px;border-radius:16px;background:#ece5f1;justify-self:start}
.pv-seg [role=tab]{display:inline-flex;align-items:center;gap:7px;min-height:44px;padding:0 18px;border:0;border-radius:12px;background:none;color:var(--muted);font:600 15px var(--font-body);cursor:pointer;transition:background .2s ease-out,color .2s,transform .18s ease-out}
.pv-seg [role=tab][aria-selected=true]{background:#fff;color:var(--ink);box-shadow:0 2px 8px -3px rgba(35,26,46,.25)}
.pv-seg [role=tab]:active{transform:scale(.97)}
.pv-seg [role=tab] b{min-width:20px;padding:2px 6px;border-radius:999px;background:var(--violet);color:#fff;font-size:12px;line-height:16px;text-align:center}
.pv-seg [role=tab] b:empty,.pv-seg [role=tab] b[hidden]{display:none}
.pv-pane{display:grid;gap:14px;min-width:0}
.pv-pane[hidden]{display:none}

/* ——— Buscador ——— */
.pv-search{display:flex;align-items:center;gap:8px;min-width:0}
.pv-search input{flex:1;min-width:0;box-sizing:border-box;height:52px;padding:0 16px 0 46px;border-radius:16px;border:1px solid var(--line-strong);background:#fff;color:var(--ink);font:16px var(--font-body);-webkit-appearance:none;appearance:none;transition:border-color .2s,box-shadow .2s}
.pv-search input:focus{outline:none;border-color:var(--violet);box-shadow:0 0 0 4px rgba(113,84,146,.14)}
.pv-search input::-webkit-search-cancel-button{-webkit-appearance:none}
.pv-sico{position:absolute;margin-left:15px;display:flex;color:var(--muted);pointer-events:none}
.pv-fbtn{position:relative;display:inline-flex;align-items:center;gap:8px;height:52px;padding:0 16px;border-radius:16px;border:1px solid var(--line-strong);background:#fff;color:var(--ink);font:600 15px var(--font-body);cursor:pointer;transition:transform .18s ease-out,background .2s}
.pv-fbtn:active{transform:scale(.97);background:var(--lilac-soft)}
.pv-fbtn b{position:absolute;top:-6px;right:-6px;min-width:20px;height:20px;border-radius:999px;background:var(--violet);color:#fff;font-size:12px;line-height:20px;text-align:center}
.pv-chips{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;margin:0 calc(-1 * clamp(16px,4vw,40px));padding:2px clamp(16px,4vw,40px) 4px;scroll-padding:0 clamp(16px,4vw,40px);overscroll-behavior-x:contain}
.pv-chips::-webkit-scrollbar{display:none}
.pv-chip{flex:none;display:inline-flex;align-items:center;gap:7px;min-height:44px;padding:0 16px;border-radius:999px;border:1px solid var(--line);background:#fff;color:var(--ink);font:600 14.5px var(--font-body);cursor:pointer;white-space:nowrap;transition:background .2s ease-out,border-color .2s,color .2s,transform .18s ease-out}
.pv-chip:active{transform:scale(.96)}
.pv-chip svg{color:var(--violet)}
.pv-chip[aria-checked=true]{background:var(--ink);border-color:var(--ink);color:#fff}
.pv-chip[aria-checked=true] svg{color:var(--lilac)}
.pv-active{display:flex;flex-wrap:wrap;gap:8px}
.pv-active:empty{display:none}
.pv-on{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 10px 0 12px;border-radius:999px;border:0;background:var(--lilac);color:var(--violet-deep);font:600 14px var(--font-body);cursor:pointer}
.pv-on:active{transform:scale(.97)}
.pv-count{margin:0;color:var(--muted);font-size:14px}
.pv-count:empty{display:none}

/* ——— Resultados ——— */
/* Tarjeta (maqueta aprobada, Mati TG 3304): foto en arco que se pasa con el dedo (contador y puntitos), corazón abajo a la
   derecha de la foto, rubro chico, nombre en Nura, frase y zona; talón de ticket troquelado con el precio o «A medida» y
   «Pedir →». Compu: 3 por fila. Celular: 2 por fila con la tarjeta compacta (Mati: «al menos 2 en la misma hoja»).
   Lo compacto lo decide el ancho de la tarjeta (container query), no el de la pantalla. */
.pv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:22px;transition:opacity .2s}
/* Compu ancha: 4 por fila (Mati TG 4296) */
@media (min-width:1100px){.pv-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}}
.pv-card{--pad:10px;position:relative;display:grid;grid-template-rows:auto 1fr auto;min-width:0;padding:var(--pad) var(--pad) 0;border-radius:26px;background:#fff;container-type:inline-size;
  box-shadow:0 0 0 1px var(--line),0 22px 44px -36px rgba(35,26,46,.55);animation:pv-in .32s var(--ease) both;animation-delay:calc(var(--i,0) * 35ms);transition:transform .22s var(--ease),box-shadow .22s}
@keyframes pv-in{from{opacity:0;transform:translateY(10px)}}
.pv-card:has(.pv-open:active){transform:scale(.985)}
@media (hover:hover){.pv-card:hover{transform:translateY(-3px);box-shadow:0 0 0 1px var(--lavender),0 28px 50px -34px rgba(35,26,46,.6)}
  .pv-card:hover .pv-ph:not([data-n]) img{transform:scale(1.035)}.pv-card:hover .pv-go svg{transform:translateX(3px)}}
.pv-open{position:absolute;inset:0;z-index:1;border:0;background:none;cursor:pointer;border-radius:inherit}
.pv-open:focus-visible{outline:3px solid var(--violet);outline-offset:-3px}

/* La foto en arco (el arco del salón, como en la invitación). Con varias fotos queda sobre el botón de la tarjeta para poder
   deslizarla; tocarla abre la ficha igual (data-open). */
.pv-ph{position:relative;aspect-ratio:4/4.4;overflow:hidden;border-radius:50% 50% 16px 16px/34% 34% 16px 16px;background:var(--lilac-soft)}
.pv-ph[data-n]{z-index:2;cursor:pointer}
.pv-ph[data-n]::after{content:"";position:absolute;inset:auto 0 0;z-index:1;height:34%;background:linear-gradient(transparent,rgba(35,26,46,.4));pointer-events:none}
.pv-tr{display:flex;height:100%;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior-x:contain;border-radius:inherit}
.pv-tr::-webkit-scrollbar{display:none}
.pv-tr > *{flex:0 0 100%;width:100%;height:100%;scroll-snap-align:start;scroll-snap-stop:always}
.pv-tr img{display:block;object-fit:cover;object-position:50% 22%;-webkit-user-drag:none;user-select:none;-webkit-touch-callout:none;transition:transform .5s var(--ease)}
.pv-sl{display:block;background:var(--lilac-soft)}
.pv-n{position:absolute;left:12px;bottom:12px;z-index:2;padding:4px 9px;border-radius:999px;background:rgba(35,26,46,.55);color:#fff;font:600 12px/1 var(--font-body);letter-spacing:.04em;font-variant-numeric:tabular-nums;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);pointer-events:none}
.pv-dots{position:absolute;left:50%;bottom:17px;z-index:2;display:flex;gap:5px;transform:translateX(-50%);pointer-events:none}
.pv-dots i{width:6px;height:6px;border-radius:999px;background:rgba(255,255,255,.55);transition:width .22s var(--ease),background .22s}
.pv-dots i.on{width:16px;background:#fff}
.pv-pa{position:absolute;top:50%;z-index:3;display:grid;place-items:center;width:38px;height:38px;margin-top:-19px;padding:0;border:0;border-radius:50%;background:rgba(251,250,252,.94);color:var(--ink);box-shadow:0 6px 16px -8px rgba(0,0,0,.45);cursor:pointer;opacity:0;transition:opacity .2s,transform .18s var(--ease)}
.pv-pa.prev{left:10px}.pv-pa.next{right:10px}
.pv-pa[hidden]{display:none}
.pv-pa:active{transform:scale(.92)}
@media (hover:hover){.pv-ph:hover .pv-pa,.pv-pa:focus-visible{opacity:1}}
@media (hover:none){.pv-pa{display:none}}
.pv-heart{position:absolute;right:10px;bottom:10px;z-index:3;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;border:0;background:rgba(255,255,255,.94);color:var(--ink);cursor:pointer;box-shadow:0 6px 16px -8px rgba(0,0,0,.45)}
.pv-heart:active{transform:scale(.88)}
.pv-heart[aria-pressed=true]{color:#c2416b}
.pv-top{position:absolute;top:14px;left:50%;z-index:2;display:flex;flex-wrap:wrap;justify-content:center;gap:6px;width:max-content;max-width:calc(100% - 40px);transform:translateX(-50%);pointer-events:none}
.pv-feat{padding:5px 10px;border-radius:999px;background:rgba(35,26,46,.82);color:#fff;font:600 12px/1 var(--font-body);letter-spacing:.04em;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.pv-st{padding:5px 10px;border-radius:999px;background:rgba(251,250,252,.95);color:var(--violet-deep);font:600 12.5px/1 var(--font-body)}
.pv-st[data-s=contratado]{background:#dff1e6;color:var(--ok)}
/* Sello de Jupá: solo en fichas armadas por Jupá (la búsqueda tiene que traer armada === true) */
.pv-noph{position:absolute;inset:0;display:grid;place-items:center}
.pv-ph.none{background:var(--lilac)}
.pv-ph.none .pv-noph b{font:500 40px/1 var(--font-display);letter-spacing:.02em;color:var(--violet-deep)}

/* Texto */
.pv-ct{display:grid;align-content:start;gap:5px;min-width:0;padding:15px 8px}
.pv-ck{display:flex;align-items:baseline;justify-content:space-between;gap:8px;min-width:0;margin:0;font:600 11px/1.3 var(--font-body);letter-spacing:.22em;text-transform:uppercase;color:var(--violet)}
.pv-ck > span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pv-rat{flex:none;font:700 13px/1.3 var(--font-body);letter-spacing:0;text-transform:none;color:var(--ink);white-space:nowrap}
.pv-rat small{font:400 13px var(--font-body);color:var(--muted)}
.pv-ct h3{margin:0;font:500 22px/1.04 var(--font-display);letter-spacing:.02em;text-transform:uppercase;color:var(--ink);text-wrap:balance;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.pv-tag{margin:0;color:var(--muted);font:400 14.5px/1.4 var(--font-body);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pv-sub{display:flex;align-items:center;gap:5px;min-width:0;margin:1px 0 0;color:var(--ink);font:500 13.5px/1.3 var(--font-body)}
.pv-sub span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Antigüedad en Jupá (spec 2026-11-03, Mati TG 5430 y 5440): una línea simple debajo del nombre, resaltada como con marcador lila (la mitad
   baja de las letras), en violeta; sin caja, borde ni ícono. Contraste violeta sobre lila 4,73:1 (AA) */
.pv-ant{width:fit-content;max-width:100%;margin:-1px 0 0;padding:0 3px;color:var(--violet);font:500 12.5px/1.3 var(--font-body);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:linear-gradient(transparent 55%,var(--lilac) 55%);-webkit-box-decoration-break:clone;box-decoration-break:clone}
.pf-ant{width:fit-content;max-width:100%;margin:10px 0 0;padding:0 3px;color:var(--violet);font:500 14px/1.35 var(--font-body);background:linear-gradient(transparent 55%,var(--lilac) 55%);-webkit-box-decoration-break:clone;box-decoration-break:clone}
.pv-sub svg{flex:none;width:15px;height:15px;color:var(--violet)}
.pv-facts{display:flex;flex-wrap:wrap;gap:3px 14px;margin:0;color:var(--ink);font:500 13.5px/1.3 var(--font-body)}
.pv-facts span{display:inline-flex;align-items:center;gap:5px}
.pv-facts svg{flex:none;color:var(--violet)}
.pv-ct .pv-badge{justify-self:start;margin-top:2px}
/* Etiquetas (base 187): pastillas con borde, como un sello chico; en la tarjeta hasta 2 y «+N» */
.pv-tg{display:flex;flex-wrap:wrap;gap:5px;margin:2px 0 0;padding:0;list-style:none;min-width:0}
.pv-tg li{display:inline-flex;align-items:center;min-height:24px;padding:0 9px;border:1px solid var(--lavender,#cdb8ec);border-radius:999px;color:var(--violet-deep,#4b3658);font:600 12px/1 var(--font-body);white-space:nowrap}
.pv-tg li.more{border-style:dashed;color:var(--muted)}
.pv-tg li.mc{display:none}
.pv-tg a{color:inherit;text-decoration:none}
.pf-head .pv-tg{margin-top:10px}.pf-head .pv-tg li{min-height:30px;padding:0 12px;font-size:13.5px}

/* Talón troquelado (el ticket de Jupá): precio o «A medida» a la izquierda, «Pedir →» a la derecha */
.pv-tk{position:relative;display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 calc(-1 * var(--pad));padding:14px 16px 16px 18px;border-top:2px dashed var(--line-strong);background:var(--lilac-soft);border-radius:0 0 26px 26px}
.pv-tk::before,.pv-tk::after{content:"";position:absolute;top:-11px;width:20px;height:20px;border-radius:50%;background:var(--paper);box-shadow:inset 0 0 0 1px var(--line)}
.pv-tk::before{left:-10px;clip-path:inset(0 0 0 50%)}.pv-tk::after{right:-10px;clip-path:inset(0 50% 0 0)}
.pv-tv{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:baseline;column-gap:6px;min-width:0}
.pv-tl{grid-column:1/-1;font:600 11px/1.3 var(--font-body);letter-spacing:.22em;text-transform:uppercase;color:var(--violet)}
.pv-tp{font:500 21px/1.1 var(--font-display);letter-spacing:.02em;text-transform:uppercase;color:var(--violet-deep);white-space:nowrap}
.pv-tps{display:none}
.pv-tv small{min-width:0;font:400 13px var(--font-body);color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pv-go{flex:none;display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;padding:0 16px;border-radius:999px;background:var(--ink);color:#fff;font:600 14.5px var(--font-body);transition:background .2s}
.pv-go svg{transition:transform .2s var(--ease)}
.pv-card:has(.pv-open:active) .pv-go{background:var(--violet-deep)}

/* Compacta (las dos por fila del celular): foto más baja, nombre de 2 líneas, frase de 1, precio corto y «→» redondo de 44 */
@container (max-width:240px){
  .pv-ph{aspect-ratio:1/1;border-radius:50% 50% 12px 12px/32% 32% 12px 12px}
  .pv-n{left:8px;bottom:8px;padding:4px 7px;font-size:11px}
  .pv-dots{bottom:13px;gap:4px}.pv-dots i{width:5px;height:5px}.pv-dots i.on{width:12px}
  .pv-heart{right:6px;bottom:6px}
  .pv-heart svg{width:19px;height:19px}
  .pv-top{top:10px;max-width:calc(100% - 24px)}
  .pv-feat,.pv-st{padding:4px 8px;font-size:11.5px}
    .pv-ph.none .pv-noph b{font-size:32px}
  .pv-ct{gap:3px;padding:11px 4px}
  .pv-ck{font-size:10.5px;letter-spacing:.16em}
  .pv-rat small{display:none}
  .pv-ct h3{font-size:16px;line-height:1.06;-webkit-line-clamp:2}
  .pv-tag{font-size:13px;line-height:1.35;-webkit-line-clamp:1}
  .pv-sub{font-size:13px}.pv-sub svg{width:13px;height:13px}
  .pv-ant{font-size:11.5px}
  .pv-facts{flex-wrap:nowrap;gap:0 10px;overflow:hidden;white-space:nowrap;font-size:13px}
  .pv-facts svg{width:13px;height:13px}
  .pv-ct .pv-badge{font-size:11.5px}
  .pv-tg{flex-wrap:nowrap;overflow:hidden}.pv-tg li{min-height:22px;padding:0 7px;font-size:11.5px;flex:none}
  .pv-tg li.t2,.pv-tg li.more:not(.mc){display:none}.pv-tg li.mc{display:inline-flex}
  .pv-tg li:first-child{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;display:block;line-height:20px}
  .pv-tk{gap:6px;padding:10px 8px 11px 11px;border-radius:0 0 20px 20px}
  .pv-tk::before,.pv-tk::after{top:-9px;width:16px;height:16px}.pv-tk::before{left:-8px}.pv-tk::after{right:-8px}
  .pv-tv{grid-template-columns:minmax(0,1fr)}
  .pv-tl{font-size:10.5px;letter-spacing:.16em}
  .pv-tp{font-size:16px;overflow:hidden;text-overflow:ellipsis}
  .pv-tpl{display:none}.pv-tps{display:inline}
  .pv-tv small{font-size:12.5px}
  .pv-go{width:44px;height:44px;padding:0}
  .pv-go > span{display:none}
}
@media (max-width:899px){.pv-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}}
@media (max-width:559px){.pv-grid{gap:10px}.pv-card{--pad:6px;border-radius:20px}}
@media (max-width:339px){.pv-grid{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){.pv-card,.pv-tr img,.pv-go,.pv-go svg,.pv-dots i,.pv-pa{animation:none;transition:none}}
.pv-grid.loading{opacity:.55}
.pv-more{justify-self:center;width:auto;padding:0 28px}

/* ——— Estados vacíos ——— */
.pv-empty{display:grid;justify-items:center;gap:10px;padding:clamp(28px,6vw,56px) 20px;border-radius:26px;background:linear-gradient(160deg,#fff,#f3ecfa);border:1px dashed var(--line-strong);text-align:center}
.pv-empty[hidden]{display:none}
.pv-empty h2{margin:0;max-width:520px;font:500 clamp(24px,3vw,32px)/1.02 var(--font-display);text-transform:uppercase}
.pv-empty p{margin:0;max-width:460px;color:var(--muted);font-size:15.5px;line-height:1.5}
.pv-empty .btn{width:auto;margin-top:6px;padding:0 20px;min-height:44px}
.pv-eart{display:flex;gap:10px;color:var(--violet)}
.pv-eart svg{width:46px;height:46px;padding:10px;border-radius:16px;background:#fff;box-shadow:0 10px 24px -18px rgba(35,26,46,.6)}

/* ——— Su lista ——— */
.pv-group{display:grid;gap:8px;margin-bottom:10px}
.pv-group h2{display:flex;align-items:center;gap:8px;margin:6px 0 0;font:600 13px var(--font-body);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.pv-group h2 span{padding:1px 8px;border-radius:999px;background:#ece5f1;color:var(--violet-deep);letter-spacing:0}
.pv-rows{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.pv-row{display:flex;align-items:center;gap:12px;width:100%;min-height:72px;padding:10px 12px 10px 10px;border-radius:18px;border:1px solid var(--line);background:#fff;color:var(--ink);text-align:left;font:inherit;cursor:pointer;transition:transform .18s ease-out,background .2s}
.pv-row:active{transform:scale(.985);background:var(--lilac-soft)}
.pv-row>svg{flex:none;color:#a99bb7}
.pv-th{flex:none;display:grid;place-items:center;width:56px;height:56px;border-radius:14px;overflow:hidden;background:#f3ecfa;color:var(--violet)}
.pv-th img{width:100%;height:100%;object-fit:cover}
.pv-rt{flex:1;min-width:0;display:grid;gap:2px}
.pv-rt b{font-weight:650;font-size:16px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pv-rt small{color:var(--muted);font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pv-rt .pv-rn{color:var(--ink);font-style:italic}
.pv-off{flex:none;padding:3px 8px;border-radius:999px;background:var(--butter);font-size:12px;font-weight:600}
.pv-cta-prov{margin:18px 0 0;text-align:center;font-size:14px}
.pv-cta-prov a{color:var(--violet-deep);font-weight:600}

/* ——— Hojas (en la compu, diálogo simple; en el celular, hoja desde abajo de shell.css) ——— */
.drawer.pv-dlg .sheet.pv-sheet{border-radius:24px;padding:28px 28px 22px;background:var(--paper);text-align:left}
@media (min-width:900px) and (min-height:541px),(min-width:1024px){.drawer.pv-dlg .sheet.pv-sheet::before{display:none}.drawer.pv-dlg .sheet.pv-sheet{width:min(560px,100%)}}
.drawer.pv-dlg .sheet h2{text-align:left;font:650 24px/1.2 var(--font-body);font-style:normal;color:var(--ink);margin:2px 0 14px}
.drawer.pv-dlg .overline{display:block;color:var(--violet);font:600 12px var(--font-body);letter-spacing:.14em;text-transform:uppercase}
.pv-form{display:grid;gap:14px}
.pv-form label,.pv-save label,.pv-dlg label{display:grid;gap:6px;font:600 14px var(--font-body);color:var(--ink)}
.pv-form label small,.pv-save label small,.pv-dlg label small{font-weight:500;color:var(--muted)}
.pv-form :is(input,select,textarea),.pv-save input,.pv-dlg :is(input,select,textarea){box-sizing:border-box;width:100%;min-height:48px;padding:11px 14px;border-radius:13px;border:1px solid var(--line-strong);background:#fff;color:var(--ink);font:16px/1.4 var(--font-body);transition:border-color .2s,box-shadow .2s}
.pv-form textarea,.pv-dlg textarea{min-height:96px;resize:vertical}
.pv-form :is(input,select,textarea):focus,.pv-save input:focus,.pv-dlg :is(input,select,textarea):focus{outline:none;border-color:var(--violet);box-shadow:0 0 0 4px rgba(113,84,146,.14)}
.pv-form [aria-invalid=true]{border-color:var(--err)}
.pv-two{display:grid;grid-template-columns:1fr 1fr;gap:12px}
/* Si un rótulo ocupa 2 renglones (p. ej. «Fecha del casamiento»), los dos campos igual quedan a la misma altura (Mati TG 4950) */
.pv-two>label{display:flex;flex-direction:column;justify-content:flex-end;gap:6px}
.pv-fs{margin:0;padding:0;border:0;display:grid;gap:12px}
.pv-fs+.pv-fs{padding-top:14px;border-top:1px solid var(--line)}
.pv-fs legend{float:left;width:100%;padding:0 0 10px;font:600 12.5px var(--font-body);letter-spacing:.14em;text-transform:uppercase;color:var(--violet)}
.pv-hint{margin:0;color:var(--muted);font-size:13.5px;line-height:1.45;font-weight:400}
.pv-lt{display:block}
.pv-err{margin:0;padding:10px 12px;border-radius:12px;background:#fbe9ec;color:var(--err);font-size:14px}
.pv-err[hidden]{display:none}
.pv-town{position:relative}
.pv-sug{position:absolute;left:0;right:0;top:100%;z-index:5;margin:4px 0 0;padding:6px;list-style:none;border-radius:14px;background:#fff;border:1px solid var(--line);box-shadow:0 20px 40px -20px rgba(35,26,46,.45);max-height:260px;overflow-y:auto;overscroll-behavior:contain}
.pv-sug[hidden]{display:none}
.pv-sug li{display:grid;gap:1px;padding:10px 12px;border-radius:10px;cursor:pointer;min-height:44px;box-sizing:border-box;align-content:center}
.pv-sug li:hover,.pv-sug li:active{background:var(--lilac-soft)}
.pv-sug b{font-weight:600}.pv-sug small{color:var(--muted);font-weight:500}
.pv-near{justify-self:start;width:auto;gap:8px;min-height:44px;padding:0 16px}
.pv-near.on{background:var(--lilac);border-color:var(--lilac);color:var(--violet-deep)}
.pv-dist{display:grid;gap:8px;font:600 14px var(--font-body)}
.pv-dist[hidden]{display:none}
.pv-segs{display:flex;flex-wrap:wrap;gap:6px}
.pv-segs label,.pv-kind label{position:relative;display:block}
.pv-segs label[hidden],.pv-kind label[hidden]{display:none}
.pv-tags-f>label:first-child{order:-2}.pv-tags-f>label[data-mio]{order:-1}
.pv-segs input,.pv-kind input{position:absolute;opacity:0;pointer-events:none}
.pv-segs span,.pv-kind span{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 14px;border-radius:12px;border:1px solid var(--line);background:#fff;font:600 14.5px var(--font-body);cursor:pointer;transition:background .2s,border-color .2s,color .2s}
.pv-segs input:checked+span,.pv-kind input:checked+span{background:var(--ink);border-color:var(--ink);color:#fff}
.pv-segs input:focus-visible+span,.pv-kind input:focus-visible+span{outline:2px solid var(--violet);outline-offset:2px}
.pv-kind{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.pv-kind span{width:100%;box-sizing:border-box}
.pv-dlg .jbar{display:flex;gap:10px;margin-top:4px}
.pv-dlg .jbar .btn{flex:1 1 0;width:auto}

/* ——— Ficha (las piezas; la página entera está al final: «Ficha a página completa») ——— */
.pv-dload{display:flex;justify-content:center;gap:8px;padding:120px 0}
.pv-dload span{width:10px;height:10px;border-radius:50%;background:var(--violet);animation:pv-dot .9s infinite alternate}
.pv-dload span:nth-child(2){animation-delay:.15s}.pv-dload span:nth-child(3){animation-delay:.3s}
@keyframes pv-dot{to{opacity:.2;transform:translateY(-6px)}}
.pv-featb{color:var(--violet-deep)}
.pv-contact,.pv-vids{display:flex;flex-wrap:wrap;gap:8px}
.pv-cbtn{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 14px;border-radius:13px;border:1px solid var(--line);background:#fff;color:var(--ink);font:600 14.5px var(--font-body);text-decoration:none;transition:transform .18s ease-out,background .2s}
.pv-cbtn:active{transform:scale(.97);background:var(--lilac-soft)}
.pv-cbtn svg{color:var(--violet)}
.pv-ds h3{margin:0 0 8px;font:600 12.5px var(--font-body);letter-spacing:.14em;text-transform:uppercase;color:var(--violet)}
.pv-desc{margin:0;white-space:pre-line;font-size:15.5px;line-height:1.6}
.pv-tags{display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none}
.pv-tags li{padding:6px 12px;border-radius:999px;background:#f3ecfa;color:var(--violet-deep);font-size:14px;font-weight:500}
.pv-specs{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin:0}
.pv-specs div{padding:12px 14px;border-radius:14px;background:#fff;border:1px solid var(--line)}
.pv-specs dt{font-size:12.5px;color:var(--muted)}
.pv-specs dd{margin:2px 0 0;font-weight:650;font-size:15px}
.pv-map{display:flex;align-items:center;gap:14px;min-height:72px;padding:12px 14px;border-radius:18px;background:linear-gradient(120deg,#eef5ee,#f3ecfa);border:1px solid var(--line);color:var(--ink);text-decoration:none}
.pv-map:active{transform:scale(.985)}
.pv-mapi{display:grid;place-items:center;width:48px;height:48px;border-radius:14px;background:#fff;color:var(--violet)}
.pv-map>span:nth-child(2){flex:1;display:grid;gap:2px;min-width:0}
.pv-map small{color:var(--muted)}
.pv-fine{margin-top:-4px!important;color:var(--muted);font-size:12.5px}
.pv-save{display:grid;gap:12px;padding:16px;border-radius:18px;background:#f3ecfa;border:1px solid #e8dcf7}
.pv-save:not(.on){padding:12px 16px}
.pv-sh{display:flex;align-items:center;justify-content:space-between;gap:10px}
.pv-sh b{white-space:nowrap}
.pv-sh{flex-wrap:wrap}.pv-sh-acc{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}
.pv-lnk.pv-quitar{background:transparent;color:var(--muted);font-weight:500}.pv-lnk.pv-quitar.seguro{background:#fff;color:#a3283f;font-weight:600}
.pv-lnk{white-space:nowrap;display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:0 12px;border-radius:12px;border:0;background:#fff;color:var(--violet-deep);font:600 14px var(--font-body);cursor:pointer}
.pv-lnk:active{transform:scale(.97)}
.pv-lnk.pulse{animation:pv-pulse .9s ease-out 2}
@keyframes pv-pulse{50%{box-shadow:0 0 0 6px rgba(113,84,146,.25)}}
.pv-steps{display:flex;flex-wrap:wrap;gap:6px}
.pv-steps button{flex:none;min-height:40px;padding:0 14px;border-radius:999px;border:1px solid var(--line-strong);background:#fff;color:var(--ink);font:600 14px var(--font-body);cursor:pointer;transition:background .2s,color .2s,transform .18s}
.pv-steps button:active{transform:scale(.96)}
.pv-steps button[aria-checked=true]{background:var(--violet-deep);border-color:var(--violet-deep);color:#fff}
.pv-steps button[data-st=contratado][aria-checked=true]{background:var(--ok);border-color:var(--ok)}
.pv-dheart[aria-pressed=true]{color:#c2416b}
.pv-dheart[aria-pressed=true] span{color:var(--ink)}
.pv-ro-note{padding:0}

/* ——— Avisos ——— */
.sr-only{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ——— Celular parado ——— */
@media (max-width:899px){
  .pv{padding:12px 16px calc(var(--jbot) + 28px);gap:14px}
  .pv-head h1{font-size:30px}
  .pv-lead{font-size:15px}
  .pv-seg{justify-self:stretch}.pv-seg [role=tab]{flex:1;justify-content:center}
  .pv-chips{margin:0 -16px;padding:2px 16px 4px;scroll-padding:0 16px}
  .pv-fbtn span{display:none}.pv-fbtn{width:52px;justify-content:center;padding:0}
  .pv-two{grid-template-columns:1fr}
  .pv-dlg .jbar .btn{min-height:50px}
}
/* Celular acostado: riel a la izquierda (shell.css), dos columnas */
@media (orientation:landscape) and (max-height:540px) and (max-width:1023px){
  .pv{padding:12px 20px 28px;gap:12px}
  .pv-head h1{font-size:26px}
  .pv-head .pv-lead{display:none}
  .pv-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .pv-fbtn span{display:none}
}
@media (prefers-reduced-motion:reduce){.pv-card,.pv-dload span,.pv-lnk.pulse{animation:none;transition:none}}

/* ——— Ficha (migración 140): «Patrocinado» explicado, km, trato directo, reportar, video adentro ——— */
.pv-spon{display:flex;align-items:center;flex-wrap:wrap;gap:4px 10px;margin:6px 0 0}
.pv-spon span{padding:4px 10px;border-radius:999px;background:var(--ink);color:#fff;font:600 12px/1 var(--font-body);letter-spacing:.04em}
.pv-spon .pv-lnk{min-height:32px}
.pv-spon-x{margin:8px 0 0;padding:10px 12px;border-radius:12px;background:#f3ecfa;font-size:14.5px;line-height:1.5}
.pv-spon-x a{color:var(--violet-deep);font-weight:600}
.pv-dkm{font-weight:600;color:var(--ink)}
.pv-facts span svg{flex:none}
.pv-desc{font-size:16px}
.pv-vids{display:grid;gap:10px}
.pv-vid{border-radius:16px;overflow:hidden;background:#231a2e}
.pv-vid iframe,.pv-vplay{display:block;width:100%;aspect-ratio:16/9;border:0}
.pv-vid.tall iframe,.pv-vid.tall .pv-vplay{aspect-ratio:9/14;max-height:70svh}
.pv-vplay{position:relative;display:flex;align-items:flex-end;gap:12px;padding:16px;background:radial-gradient(120% 90% at 30% 20%,#715492 0,#231a2e 70%);color:#fff;cursor:pointer;text-align:left;font:inherit}
.pv-vbtn{position:absolute;inset:0;margin:auto;display:grid;place-items:center;width:64px;height:64px;border-radius:50%;background:#fbfafc;color:var(--ink);transition:transform .18s cubic-bezier(.16,1,.3,1)}
.pv-vbtn svg{width:26px;height:26px;margin-left:3px}
.pv-vplay:active .pv-vbtn{transform:scale(.94)}
.pv-vt{position:relative;display:grid;gap:2px;font:600 15px var(--font-body)}
.pv-vt small{font-weight:400;font-size:13px;color:#e8dcf7}
.pv-direct{margin:0;padding:12px 14px;border-radius:14px;background:#f3ecfa;color:var(--ink);font-size:14px;line-height:1.5}
.pv-report{justify-self:start;display:inline-flex;align-items:center;min-height:44px;color:var(--muted);font-size:14px;text-decoration:underline;text-underline-offset:3px}
/* El botón de regalo flota abajo a la derecha: la lista deja lugar para que no tape la última tarjeta ni el botón de compartir */
html.has-jgift .pv{padding-bottom:calc(var(--jbot,0px) + 96px)}
html.has-jgift #pvEmpty{padding-bottom:84px}
/* ——— Reseñas verificadas (migración 141) ——— */
.pv-stars{color:var(--violet,#715492);letter-spacing:.06em}
.pv-rate{display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px;margin:4px 0 0;font-size:13.5px;color:var(--ink)}
.pv-rate span:nth-child(2){font-weight:600}
.pv-badge{display:inline-flex;align-items:center;padding:3px 9px;border-radius:999px;background:var(--lilac,#e8dcf7);color:var(--violet-deep);font:600 12px/1.2 var(--font-body)}
.pv-drate{display:flex;align-items:center;flex-wrap:wrap;gap:4px 10px;margin:6px 0 0;font-size:15px}
.pv-drate a{display:inline-flex;align-items:center;min-height:32px;color:var(--ink);font-weight:600;text-decoration:underline;text-underline-offset:3px}
.pv-rsum{display:grid;grid-template-columns:auto 1fr;gap:18px;align-items:center;margin:0 0 14px;padding:14px 16px;border-radius:16px;background:#f3ecfa}
.pv-ravg{display:grid;justify-items:center;gap:2px;margin:0}
.pv-ravg b{font:400 40px/1 var(--font-display,inherit);color:var(--ink)}
.pv-ravg small{color:var(--muted);font-size:13px}
.pv-rbars{list-style:none;margin:0;padding:0;display:grid;gap:4px;font-size:13px;color:var(--muted)}
.pv-rbars li{display:grid;grid-template-columns:32px 1fr 22px;align-items:center;gap:8px}
.pv-rbars i{height:6px;border-radius:999px;background:linear-gradient(90deg,var(--violet,#715492) var(--w),#fff var(--w))}
.pv-rlist{list-style:none;margin:0 0 10px;padding:0;display:grid;gap:12px}
.pv-rv{padding:14px 16px;border-radius:16px;box-shadow:inset 0 0 0 1px var(--line,#ece5f1)}
.pv-rvh{display:flex;align-items:center;flex-wrap:wrap;gap:4px 10px;margin:0 0 6px}
.pv-rvh small{color:var(--muted);font-size:13px}
.pv-ver{display:inline-flex;align-items:center;padding:3px 9px;border-radius:999px;background:var(--lilac-soft);color:var(--violet-deep);font:600 12px/1.2 var(--font-body)}
.pv-rvb{margin:0;font-size:16px;line-height:1.55;white-space:pre-line}
.pv-rvr{margin:10px 0 0;padding:10px 12px;border-left:3px solid var(--lilac,#e8dcf7);font-size:15px}
.pv-rvr b{font-size:13px;color:var(--violet,#715492)}
.pv-rvr p{margin:4px 0 0;line-height:1.5;white-space:pre-line}
/* Quién dejó la reseña (base 313): etiqueta chica al lado del nombre (Nura, mayúsc., .18em), discreta; la de colega firma con su ficha */
.pv-quien{display:inline-block;color:var(--muted);font:500 11px/1.4 var(--font-display);letter-spacing:.18em;text-transform:uppercase}
.pv-rvh>a{display:inline-block;padding:6px 0;color:var(--ink);font-weight:600;text-decoration:underline;text-decoration-color:var(--lavender,#cdb8ec);text-underline-offset:3px;overflow-wrap:anywhere}
.pv-myrev{display:grid;gap:4px;justify-items:start;margin:4px 0 12px;padding:12px 14px;border-radius:14px;background:#fff;box-shadow:inset 0 0 0 1px var(--line,#ece5f1)}
.pv-myrev p{margin:0;display:flex;align-items:center;gap:8px}
.pv-myrev-w{margin:4px 0 12px}
.pv-rh{display:block;margin-top:2px;color:var(--violet,#715492);font-weight:600}
.pv-rh[data-r=rechazada]{color:var(--ink)}
.pv-starsel{border:0;margin:0;padding:0}
.pv-starsel legend{margin:0 0 6px;font-weight:600}
.pv-starrow{display:flex;flex-direction:row-reverse;justify-content:flex-end;gap:2px}
.pv-starrow input{position:absolute;opacity:0;width:1px;height:1px}
.pv-starrow label{display:grid;place-items:center;min-width:48px;min-height:48px;font-size:34px;line-height:1;color:#cdb8ec;cursor:pointer;transition:color .18s cubic-bezier(.16,1,.3,1),transform .18s cubic-bezier(.16,1,.3,1)}
.pv-starrow input:checked~label,.pv-starrow label:hover,.pv-starrow label:hover~label{color:var(--violet,#715492)}
.pv-starrow label:active{transform:scale(.9)}
.pv-starrow input:focus-visible+label{outline:2px solid var(--violet,#715492);outline-offset:2px;border-radius:12px}
@media (prefers-reduced-motion:reduce){.pv-starrow label{transition:none}}
.pp-reply{display:grid;gap:8px;margin:10px 0 0}
.pp-reply label{display:grid;gap:6px;font-weight:600;font-size:14px}
.pp-reply label small{font-weight:400;color:var(--muted)}
.pp-reply textarea{font-size:16px}
.pp-reply .btn{justify-self:start}

/* ——— Directorio con la marca (Mati TG 3031-3032, 28-oct: «muy IA»): filtros en una fila, tarjeta con foto en arco,
   nombre en Nura y talón de ticket troquelado con el precio o «Pedir presupuesto» ——— */
.pv-search input{height:50px}
.pv-active{display:flex;flex-wrap:nowrap;gap:8px;overflow-x:auto;scrollbar-width:none;margin:0 calc(-1 * clamp(16px,4vw,40px));padding:0 clamp(16px,4vw,40px);overscroll-behavior-x:contain}
.pv-active::-webkit-scrollbar{display:none}
.pv-on{flex:none;min-height:44px;gap:5px;padding:0 10px 0 14px;border:1px solid var(--line-strong);background:#fff;color:var(--ink);font:600 14px var(--font-body);transition:background .18s,border-color .18s}
.pv-on svg{width:15px;height:15px;color:var(--violet)}
.pv-on svg:last-child{transform:rotate(90deg);color:var(--muted)}
.pv-on.set{background:var(--lilac);border-color:var(--lavender);color:var(--violet-deep)}
.pv-on.set svg:last-child{color:var(--violet-deep)}
.pv-chip{min-height:44px;padding:0 14px;font-size:14px}
.pv-chip[aria-checked=true]{background:var(--violet);border-color:var(--violet)}
.pv-form[data-only] .pv-fs{display:none;border:0;padding-top:0;margin-top:0}
.pv-form[data-only=zona] .pv-fs[data-k=zona],.pv-form[data-only=cap] .pv-fs[data-k=cap],.pv-form[data-only=price] .pv-fs[data-k=price],.pv-form[data-only=years] .pv-fs[data-k=years],.pv-form[data-only=tag] .pv-fs[data-k=tag]{display:grid}
.pv-form[data-only] .pv-fs legend{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}

@media (max-width:899px){
  .pv-active{margin:0 -16px;padding:0 16px}
  .pv-head .pv-lead{display:none}
  .pv-head h1{font-size:28px}
}

/* ——— Ficha a página completa (Mati 28-oct: «quiero ver la ficha entera, bien… una página completa») ———
   La lista queda armada debajo (oculta) y vuelve igual. Compu: galería protagonista + columna con el ticket (precio, botones,
   contacto). Celular: fotos que se pasan con el dedo, todo en una columna y Guardar / Pedir presupuesto fijos abajo. */
.pf-on .pv > :not(.pf){display:none}
.pf-on .jgift,.pf-on .jgift-card,.pf-on .jgift-scrim{display:none!important}
.pf{display:grid;gap:22px;min-width:0}
/* entra con un leve subir; la barra fija no se anima (en Safari un transform en el padre la despega del borde) */
.pf > :not(.pf-bar){animation:pf-in .24s var(--ease) backwards}
.pf[hidden]{display:none}
@keyframes pf-in{from{opacity:0;transform:translateY(10px)}}
.pf-top{position:sticky;top:var(--jtop,0px);z-index:6;display:flex;align-items:center;justify-content:space-between;gap:10px;margin:-8px 0 -6px;padding:8px 0;pointer-events:none}
/* Sin barra detrás (Mati TG 3756): solo los dos botones flotan; la franja vacía no tapa toques */
.pf-top>*{pointer-events:auto}
.pf-back,.pf-share{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 16px 0 12px;border-radius:999px;border:1px solid var(--line);background:#fff;color:var(--ink);font:600 15px var(--font-body);cursor:pointer;transition:transform .18s var(--ease),background .2s,border-color .2s}
.pf-back svg{color:var(--violet);transition:transform .2s var(--ease)}
.pf-share{padding:0 16px;color:var(--violet-deep)}
.pf-back:active,.pf-share:active{transform:scale(.97);background:var(--lilac-soft)}
@media (hover:hover){.pf-back:hover,.pf-share:hover{border-color:var(--lavender)}.pf-back:hover svg{transform:translateX(-3px)}}

/* Galería (Mati 28-oct: «las fotos no se ven bien»): cada foto ENTERA y con su forma, nunca recortada.
   Compu: una tira alta (todas con la misma altura, cada una con su ancho: las verticales, verticales). Celular: un carrusel alto
   con la foto entera sobre la bruma de la marca. Tocar una abre todas en grande. */
.pf-gal{position:relative;min-width:0}
.pf-gv{display:flex;align-items:flex-end;padding:16px;background:radial-gradient(120% 90% at 30% 20%,#715492 0,#231a2e 70%);color:#fff;cursor:pointer;text-align:left;font:inherit}
.pf-gv{position:relative;overflow:hidden}
.pf-ph img.pf-gvp{position:absolute;inset:0;width:100%;height:100%;max-width:none;max-height:none;object-fit:cover;border-radius:0;background:none}
.pf-gv:has(.pf-gvp)::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(35,26,46,0) 45%,rgba(35,26,46,.78))}
.pf-gv .pv-vbtn,.pf-gv .pv-vt{z-index:1}
.pf-gv:active .pv-vbtn{transform:scale(.94)}
.pf-vlb{box-sizing:border-box;width:min(1000px,100%);max-width:none;max-height:100svh;padding:calc(12px + env(safe-area-inset-top)) 16px 16px;border:0;border-radius:24px;background:#231a2e}
.pf-vlb::backdrop{background:rgba(35,26,46,.72)}
.pf-vlb-x{display:block;min-height:44px;margin:0 0 12px auto;padding:0 16px;border:0;border-radius:12px;background:#fbfafc;color:#292534;font:600 15px var(--font-body);cursor:pointer}
.pf-vlb iframe{display:block;width:100%;aspect-ratio:16/9;border:0;border-radius:16px}
.pf-vlb iframe.tall{width:auto;height:min(76svh,720px);aspect-ratio:9/16;max-width:100%;margin:0 auto}
.pf-track{display:flex;gap:10px;height:clamp(340px,62vh,600px);overflow-x:auto;overflow-y:hidden;scroll-snap-type:x proximity;scrollbar-width:none;overscroll-behavior-x:contain;border-radius:22px;outline-offset:4px}
.pf-track::-webkit-scrollbar{display:none}
.pf-ph{position:relative;flex:0 0 auto;display:block;height:100%;max-width:100%;padding:0;border:0;border-radius:18px;overflow:hidden;background:var(--lilac-soft);cursor:zoom-in;scroll-snap-align:start}
.pf-ph img{display:block;height:100%;width:auto;max-width:100%;object-fit:contain;transition:transform .5s var(--ease)}
@media (hover:hover){.pf-ph:hover img{transform:scale(1.02)}}
.pf-gal[data-n="1"] .pf-track{justify-content:center;background:var(--lilac-soft)}
.pf-gn{display:none}
.pf-all{position:absolute;right:16px;bottom:16px;display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 16px;border:0;border-radius:13px;background:#fbfafc;color:var(--ink);font:600 15px var(--font-body);box-shadow:0 12px 30px -14px rgba(35,26,46,.65);cursor:pointer;transition:transform .18s var(--ease)}
.pf-all:active{transform:scale(.97)}
.pf-ga{position:absolute;top:50%;z-index:2;width:48px;height:48px;margin-top:-24px;border:0;border-radius:50%;background:rgba(251,250,252,.94);color:var(--ink);font-size:26px;line-height:1;cursor:pointer;box-shadow:0 8px 22px -10px rgba(35,26,46,.55);transition:opacity .2s,transform .18s var(--ease)}
.pf-ga.prev{left:14px}.pf-ga.next{right:14px}
.pf-ga:active{transform:scale(.94)}
.pf-ga[disabled]{opacity:0;pointer-events:none}
@media (hover:none){.pf-ga{display:none}}
.pf-gal.none{display:grid;place-items:center;aspect-ratio:21/6;border-radius:28px;background:var(--lilac);overflow:hidden}
.pf-ini{font:500 clamp(56px,8vw,96px)/1 var(--font-display);letter-spacing:.04em;color:var(--violet-deep)}
.pf-noph{position:absolute;right:22px;bottom:18px;color:var(--violet)}
.pf-sk{height:clamp(340px,62vh,600px);border-radius:22px;background:var(--lilac-soft)}

/* Texto y columna */
.pf-cols{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:clamp(28px,4vw,64px);align-items:start;margin-top:6px}
.pf-main{display:grid;gap:34px;min-width:0}
.pf-head .pv-k{margin-bottom:10px}
.pf-name{margin:0;font:500 clamp(38px,4.6vw,62px)/.95 var(--font-display);text-transform:uppercase;letter-spacing:.01em;color:var(--ink);text-wrap:balance;overflow-wrap:anywhere}
.pf-name:focus{outline:none}
.pf-name[data-largo="1"]{font-size:clamp(32px,3.8vw,50px)}
.pf-name[data-largo="2"]{font-size:clamp(28px,3.2vw,42px)}
.pf-name em,.pf-sec h2 em{font:400 1.04em/1 var(--font-accent);font-style:italic;text-transform:none;letter-spacing:0;color:var(--violet)}
.pf-tag{margin:12px 0 0;font:400 24px/1.25 var(--font-accent);font-style:italic;color:var(--violet-deep)}
.pf-head .pv-drate{margin-top:12px}
.pf-head .pv-drate a{min-height:44px}
.pf-place{display:flex;align-items:flex-start;gap:7px;margin:12px 0 0;color:var(--muted);font-size:16px;line-height:1.4}
.pf-place svg{flex:none;margin-top:2px;color:var(--violet)}
/* El Instagram a la vista, junto al nombre (Mati TG 5432) */
.pf-ig{display:inline-flex;align-items:center;gap:8px;min-height:44px;margin:10px 0 0;padding:0 16px 0 12px;border:1px solid var(--lavender,#cdb8ec);border-radius:999px;color:var(--violet-deep,#4b3658);font:600 15px/1.2 var(--font-body);text-decoration:none;max-width:100%;box-sizing:border-box;transition:background .18s ease,border-color .18s ease,transform .18s ease}
.pf-ig svg{flex:none;color:var(--violet)}
.pf-ig span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pf-ig:active{transform:scale(.97)}
@media (hover:hover){.pf-ig:hover{background:var(--lilac-soft,#f3ecfa);border-color:var(--violet)}}
@media (prefers-reduced-motion:reduce){.pf-ig{transition:none}}
.pf-facts{display:flex;flex-wrap:wrap;margin:-12px 0 0;padding:14px 0;list-style:none;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.pf-facts li{display:grid;gap:3px;padding:4px 22px 4px 0;margin-right:22px;border-right:1px dashed var(--lavender)}
.pf-facts li:last-child{border-right:0;margin-right:0;padding-right:0}
.pf-facts small{font:500 11px/1.2 var(--font-display);letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.pf-facts b{font-weight:600;font-size:16px;color:var(--ink)}
.pf-sec{display:grid;gap:14px;min-width:0}
.pf-sec h2{margin:0;font:500 26px/1.05 var(--font-display);text-transform:uppercase;letter-spacing:.02em;color:var(--ink)}
.pf-sec .pv-desc{font-size:17px;line-height:1.65;max-width:68ch}
.pf-sec .pv-tags li{padding:8px 14px;font-size:15px}
.pf-main .pv-report{margin-top:-14px}

/* El ticket: precio, botones y contacto (troquelado como el talón de las tarjetas) */
.pf-side{position:sticky;top:calc(var(--jtop,0px) + 76px);display:grid;gap:14px;min-width:0}
.pf-tk{position:relative;display:grid;gap:12px;padding:22px;border-radius:24px;background:#fff;box-shadow:inset 0 0 0 1px var(--line),0 26px 50px -38px rgba(35,26,46,.6)}
.pf-tk-k{margin:0;font:600 11.5px/1.2 var(--font-body);letter-spacing:.2em;text-transform:uppercase;color:var(--violet)}
.pf-price{margin:-4px 0 0;font:500 30px/1.05 var(--font-display);letter-spacing:.02em;color:var(--violet-deep);text-wrap:balance}
.pf-price small{font:600 13px var(--font-body);letter-spacing:.06em;text-transform:none;color:var(--violet);vertical-align:.35em}
.pf-tk-s{margin-top:-6px;color:var(--muted);font-size:14px;line-height:1.45}
.pf-acts{display:grid;gap:8px;margin-top:4px}
.pf-salon{display:grid;gap:6px;padding:12px;border-radius:16px;background:var(--lilac-soft);box-shadow:inset 0 0 0 1px var(--lilac)}
.pf-salonb{gap:9px;min-height:48px;font-size:15px;background:#fff}
.pf-salonb svg{color:var(--violet);flex:none}
.pf-salon.on{background:var(--lilac);box-shadow:inset 0 0 0 1px var(--lavender)}
.pf-salon.on .pf-salonb{background:var(--violet);color:var(--paper);border-color:var(--violet)}.pf-salon.on .pf-salonb svg{color:var(--paper);animation:pf-salon-ok .28s cubic-bezier(.34,1.56,.64,1)}
.pf-salon-s{color:var(--muted);font-size:13.5px;line-height:1.45}
.pf-salon-go{justify-self:start;min-height:44px;display:inline-flex;align-items:center}
.pf-salonb[aria-busy=true]{opacity:.65}
@keyframes pf-salon-ok{from{transform:scale(.5)}to{transform:none}}
@media (prefers-reduced-motion:reduce){.pf-salon.on .pf-salonb svg{animation:none}}
.pf-acts .btn,.pf-bar .btn{gap:9px;min-height:50px;font-size:15.5px}
.pf-cut{position:relative;margin:6px -22px;border-top:2px dashed var(--line-strong)}
.pf-cut::before,.pf-cut::after{content:"";position:absolute;top:-12px;width:22px;height:22px;border-radius:50%;background:var(--paper);box-shadow:inset 0 0 0 1px var(--line)}
.pf-cut::before{left:-11px;clip-path:inset(0 0 0 50%)}.pf-cut::after{right:-11px;clip-path:inset(0 50% 0 0)}
.pf-tk .pv-contact{gap:8px}
.pf-tk .pv-cbtn{flex:1 1 calc(50% - 4px);justify-content:center;min-height:46px}
.pf-tk .pv-direct{padding:4px 0 0;background:none;color:var(--muted);font-size:14px}
.pf-seal{float:right;margin:0 0 6px 12px;padding:5px 9px;border:3px double var(--ok);border-radius:8px;color:var(--ok);font:600 11px/1.1 var(--font-display);letter-spacing:.14em;text-transform:uppercase;transform:rotate(-4deg)}
.pf-side .pv-save .pv-two{grid-template-columns:1fr}
.pf-side .pv-ro-note{margin:0}
.pf-bar{display:none}
.pf-off{display:grid;gap:14px;justify-items:start;max-width:640px;padding:40px 0}
.pf-off p{margin:0;color:var(--muted);font-size:16px}
.pf-off .btn{width:auto;padding:0 22px}

/* Todas las fotos en grande */
.pf-lb{box-sizing:border-box;width:100vw;max-width:none;height:100dvh;max-height:none;margin:0;padding:0;border:0;background:#231a2e;color:#fbfafc;overflow:hidden;animation:pf-lb .22s ease-out}
.pf-lb::backdrop{background:rgba(35,26,46,.92)}
@keyframes pf-lb{from{opacity:0}}
.pf-lbh{position:absolute;z-index:2;top:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:max(10px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) 10px max(16px,env(safe-area-inset-left));font:600 15px var(--font-body);pointer-events:none}
.pf-lbh > *{pointer-events:auto}
.pf-lbx{display:grid;place-items:center;width:48px;height:48px;border:0;border-radius:50%;background:rgba(251,250,252,.14);color:#fbfafc;cursor:pointer}
.pf-lbx:active{transform:scale(.94)}
.pf-lbt{display:flex;height:100%;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior:contain}
.pf-lbt::-webkit-scrollbar{display:none}
.pf-lbt figure{flex:0 0 100%;display:grid;place-items:center;align-content:center;gap:10px;margin:0;padding:68px 16px calc(24px + env(safe-area-inset-bottom));box-sizing:border-box;scroll-snap-align:center}
.pf-lbt img{max-width:100%;max-height:calc(100dvh - 140px);object-fit:contain;border-radius:12px}
.pf-lbt figcaption{color:#e8dcf7;font-size:15px}
.pf-lba{position:absolute;top:50%;width:52px;height:52px;margin-top:-26px;border:0;border-radius:50%;background:rgba(251,250,252,.9);color:var(--ink);font-size:28px;line-height:1;cursor:pointer}
.pf-lba.prev{left:20px}.pf-lba.next{right:20px}
@media (hover:none){.pf-lba{display:none}}

/* Celular: una columna, fotos con el dedo, la barra de acciones fija abajo (en la ficha no van las pestañas) */
@media (max-width:899px){
  .pf-on .tabbar{display:none}
  .pf-on .pv{padding-bottom:calc(96px + env(safe-area-inset-bottom))}
  .pf{gap:18px}
  .pf-top{margin:-12px -16px -8px;padding:8px 16px}
  .pf-back{padding:0 14px 0 10px}
  .pf-share span{display:none}.pf-share{width:44px;padding:0;justify-content:center}
  .pf-gal{margin:0 -16px}
  /* alto fijo (una vertical entra grande); cada foto entera adentro, centrada, sin cajas de color alrededor */
  .pf-track{gap:8px;height:min(calc((100vw - 72px) * 1.25),62svh);align-items:center;padding:0 16px;border-radius:0;scroll-snap-type:x mandatory;scroll-padding:0 16px}
  .pf-ph{flex:0 0 calc(100% - 40px);display:flex;align-items:center;justify-content:center;height:100%;background:none;border-radius:0;overflow:visible}
  .pf-ph img{width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain;border-radius:18px;background:var(--lilac-soft)}
  .pf-gv{border-radius:18px;aspect-ratio:auto!important}
  .pf-gal[data-n="1"] .pf-track{background:none}
  .pf-gal[data-n="1"] .pf-ph{flex-basis:100%}
  .pf-gn{display:block;position:absolute;left:28px;bottom:10px;padding:5px 11px;border-radius:999px;background:rgba(35,26,46,.72);color:#fff;font:600 13px var(--font-body);pointer-events:none}
  .pf-all{display:none}
  .pf-gal.none{margin:0;aspect-ratio:16/9;border-radius:24px}
  .pf-sk{margin:0;height:auto;aspect-ratio:4/5;border-radius:20px}
  .pf-cols{display:flex;flex-direction:column;align-items:stretch;gap:26px;margin:0}
  .pf-main{display:contents}
  .pf-head{order:1}.pf-facts{order:2}.pf-side{order:3}.pf-main > .pf-sec,.pf-main > .pv-report{order:4}
  .pf-name{font-size:34px}
  .pf-name[data-largo="1"]{font-size:29px}
  .pf-name[data-largo="2"]{font-size:25px}
  .pf-tag{font-size:21px}
  .pf-facts{margin:-8px 0 0;padding:12px 0}
  .pf-facts{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px}
  .pf-facts li{padding:0;margin:0;border:0}
  .pf-sec h2{font-size:23px}
  .pf-sec .pv-desc{font-size:16px}
  .pf-side{position:static}
  .pf-tk{padding:18px}
  .pf-cut{margin:6px -18px}
  .pf-acts{display:none}
  .pf-tk .pv-contact + .pv-map{margin-top:2px}
  .pf-main .pv-report{margin-top:-10px}
  .pf-bar{position:fixed;z-index:62;left:0;right:0;bottom:0;display:flex;align-items:center;gap:10px;padding:10px max(16px,env(safe-area-inset-right)) calc(10px + env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));background:rgba(251,250,252,.96);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-top:1px solid var(--line)}
  .pf-bar .btn{width:auto}
  .pf-bar .pv-dheart{flex:0 0 auto;padding:0 18px}
  .pf-bar .btn.primary{flex:1 1 auto}
  .pf-bar-n{flex:1;display:grid;min-width:0}
  .pf-bar-n b,.pf-bar-n small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .pf-bar-n small{color:var(--muted);font-size:13.5px}
  .pf-off{padding:24px 0}
}
@media (max-width:389px){.pf-bar .pv-dheart span{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.pf-bar .pv-dheart{width:54px;padding:0!important}}
@media (prefers-reduced-motion:reduce){.pf > *,.pf-lb{animation:none}.pf-ph img,.pf-back,.pf-back svg{transition:none}}

/* Corazón como un like (Mati 28-oct): salta con resorte al guardar, se achica suave al sacar, no cambia de tamaño la tarjeta */
.pv-heart,.pv-dheart{-webkit-tap-highlight-color:transparent;touch-action:manipulation}
.pv-heart svg,.pv-dheart svg{transition:color .18s ease-out}
.pv-heart{transition:transform .2s cubic-bezier(.3,1.5,.5,1),color .18s ease-out}
.pv-heart.pop svg,.pv-dheart.pop svg{animation:pv-like .3s cubic-bezier(.34,1.56,.64,1)}
.pv-heart.unpop svg,.pv-dheart.unpop svg{animation:pv-unlike .2s ease-out}
.pv-heart.nope svg,.pv-dheart.nope svg{animation:pv-nope .28s ease-out}
.pv-heart.pop::after{content:"";position:absolute;inset:6px;border-radius:50%;border:2px solid currentColor;opacity:0;animation:pv-ring .36s ease-out;pointer-events:none}
@keyframes pv-like{0%{transform:scale(1)}35%{transform:scale(1.38)}65%{transform:scale(.9)}100%{transform:scale(1)}}
@keyframes pv-unlike{50%{transform:scale(.8)}}
@keyframes pv-nope{25%{transform:translateX(-3px)}75%{transform:translateX(3px)}}
@keyframes pv-ring{0%{opacity:.5;transform:scale(.6)}100%{opacity:0;transform:scale(1.35)}}
#listN.bump{display:inline-block;animation:pv-bump .3s cubic-bezier(.34,1.56,.64,1)}
@keyframes pv-bump{40%{transform:scale(1.35)}}
@media (prefers-reduced-motion:reduce){.pv-heart.pop svg,.pv-dheart.pop svg,.pv-heart.unpop svg,.pv-dheart.unpop svg,.pv-heart.nope svg,.pv-dheart.nope svg,.pv-heart.pop::after,#listN.bump{animation:none}}
/* Likes de la ficha en la tarjeta (base 185) */
.pv-facts .pv-likes{color:var(--violet);font-weight:600}
/* Rubros (Mati 29-oct: «la misma línea nada más, con flecha para desplazar, e infinita, que no termine, que vuelva a empezar»).
   Una sola fila que se desliza con el dedo, la rueda o las flechas, en bucle: proveedores-buscador.js pinta tres copias de los rubros
   (solo la del medio la ven los lectores de pantalla y el teclado) y, sin que se note, vuelve a la del medio al pasar la mitad de
   una copia. Bajo las flechas la fila no se ve (máscara), así las flechas nunca tapan un rubro y el corte queda suave. */
.pv-rub{position:relative;min-width:0;margin:0 calc(-1 * clamp(16px,4vw,40px))}
.pv-rub .pv-chips{position:relative;margin:0;padding:2px 64px 6px;scroll-padding:0 64px;overscroll-behavior-x:contain;scroll-behavior:auto;
  -webkit-mask-image:linear-gradient(90deg,transparent 0,transparent 50px,#000 64px,#000 calc(100% - 64px),transparent calc(100% - 50px));mask-image:linear-gradient(90deg,transparent 0,transparent 50px,#000 64px,#000 calc(100% - 64px),transparent calc(100% - 50px))}
.pv-rarr{position:absolute;top:2px;z-index:2;display:grid;place-items:center;width:44px;height:44px;padding:0;border:0;border-radius:50%;background:var(--paper,#fbfafc);color:var(--ink);cursor:pointer;
  box-shadow:inset 0 0 0 1px var(--line),0 3px 0 var(--lavender),0 4px 3px rgba(35,26,46,.12);transition:transform .18s cubic-bezier(.16,1,.3,1),background .2s}
.pv-rarr svg{width:20px;height:20px}
.pv-rprev{left:8px}.pv-rnext{right:8px}
.pv-rarr:active{transform:translateY(3px);box-shadow:inset 0 0 0 1px var(--line),0 0 0 var(--lavender)}
.pv-rarr:focus-visible{outline:3px solid var(--violet);outline-offset:2px}
@media (hover:hover){.pv-rarr:hover{background:var(--lilac,#e8dcf7)}}
@media (max-width:899px){.pv-rub{margin:0 -16px}.pv-rub .pv-chips{padding:2px 56px 6px;scroll-padding:0 56px;-webkit-mask-image:linear-gradient(90deg,transparent 0,transparent 48px,#000 56px,#000 calc(100% - 56px),transparent calc(100% - 48px));mask-image:linear-gradient(90deg,transparent 0,transparent 48px,#000 56px,#000 calc(100% - 56px),transparent calc(100% - 48px))}.pv-rarr{width:44px;height:44px;top:2px}.pv-rprev{left:4px}.pv-rnext{right:4px}}
/* Lista de precios del proveedor en su ficha (base 197): solo lo ya revisado, con la fecha; filas de 48 px, la fecha nunca se parte */
.pv-nw{white-space:nowrap}
.pv-lista{display:grid;gap:8px}
.pv-lista-k{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:2px 10px;margin:0;font:600 12px/1.3 var(--font-body);letter-spacing:.18em;text-transform:uppercase;color:var(--violet)}
.pv-lista-k small{font-size:13px;font-weight:500;letter-spacing:0;text-transform:none;color:var(--muted)}
.pv-lista-a{display:flex;align-items:center;gap:12px;min-height:48px;padding:6px 14px 6px 10px;border-radius:14px;background:var(--lilac-soft,#f3ecfa);color:var(--ink);text-decoration:none;transition:background-color .18s ease-out,transform .18s ease-out}
.pv-lista-a>svg{flex:none;color:var(--violet)}
.pv-lista-a span{display:grid;min-width:0}
.pv-lista-a b{font:650 15px/1.25 var(--font-body)}
.pv-lista-a small{color:var(--muted);font-size:13px}
.pv-lista-a:hover{background:var(--lilac)}
.pv-lista-a:active{transform:scale(.98)}
.pv-lista-a:focus-visible{outline:2px solid var(--violet);outline-offset:2px}
@media (prefers-reduced-motion:reduce){.pv-lista-a{transition:none}.pv-lista-a:active{transform:none}}
/* Reseñas en Google (base 311; Mati TG 5133: sin mapa ni nada de Google en la página): un enlace discreto que abre su lugar en Google */
.pf-gres{margin:0}
.gmap-ir{display:inline-flex;align-items:center;gap:6px;min-height:44px;color:var(--ink);font-weight:600;font-size:15px;text-decoration:underline;text-decoration-color:var(--lavender,#cdb8ec);text-underline-offset:3px}
.gmap-ir span{color:var(--violet,#715492);text-decoration:none}
.gmap-ir:focus-visible{outline:2px solid var(--violet);outline-offset:2px;border-radius:4px}
@media (hover:hover){.gmap-ir:hover{text-decoration-color:var(--violet,#715492)}}
