/*
 * Vyora - Cards de Productos 0.1.16
 * Único propietario visual de las cards WooCommerce.
 * Referencia visual: composición de marketplace sobria, sin copiar activos propietarios.
 */

:root{
    --vyora-card-yellow:#f6e92f;
    --vyora-card-blue:#173b68;
    --vyora-card-text:#333333;
    --vyora-card-muted:#737373;
    --vyora-card-border:#e6e6e6;
    --vyora-card-green:#00a650;
    --vyora-card-green-dark:#008f45;
    --vyora-card-blue-accent:#3483fa;
    --vyora-card-blue-soft:#e3edfb;
    --vyora-card-danger:#a72d44;
    --vyora-card-font:"Proxima Nova",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;
}

.vyora-card-item,
.woocommerce ul.products li.product.vyora-card-item,
.woocommerce-page ul.products li.product.vyora-card-item{
    padding:0!important;
    background:transparent!important;
    border:0!important;
    box-shadow:none!important;
    text-align:left!important;
}

.vyora-product-card{
    position:relative;
    display:flex;
    flex-direction:column;
    height:100%;
    min-width:0;
    overflow:hidden;
    border:1px solid var(--vyora-card-border);
    border-radius:14px;
    background:#fff;
    box-shadow:0 1px 2px rgba(0,0,0,.04);
    color:var(--vyora-card-text);
    font-family:var(--vyora-card-font);
    transition:box-shadow .18s ease,transform .18s ease;
}

.vyora-product-card:hover{
    transform:translateY(-1px);
    box-shadow:0 8px 22px rgba(0,0,0,.10);
}

.vyora-card__media{
    position:relative;
    display:flex!important;
    align-items:center;
    justify-content:center;
    width:100%;
    min-height:230px;
    aspect-ratio:1/1;
    padding:18px;
    overflow:hidden;
    background:#fff;
    text-decoration:none!important;
}

.vyora-card__image{
    display:block!important;
    width:100%!important;
    height:100%!important;
    max-width:100%!important;
    max-height:100%!important;
    margin:0!important;
    object-fit:contain!important;
    object-position:center!important;
    border-radius:0!important;
    box-shadow:none!important;
}

.vyora-card__badges{
    position:absolute;
    z-index:3;
    top:0;
    left:0;
    width:112px;
    height:112px;
    overflow:hidden;
    pointer-events:none;
}

.vyora-card__badge{
    position:absolute;
    top:20px;
    left:-34px;
    display:flex;
    align-items:center;
    justify-content:center;
    width:150px;
    min-height:32px;
    padding:6px 10px;
    border-radius:0;
    box-shadow:0 8px 16px rgba(0,0,0,.12);
    font-family:var(--vyora-card-font);
    font-size:14px;
    font-weight:700;
    line-height:1;
    letter-spacing:.02em;
    text-transform:uppercase;
    transform:rotate(-45deg);
    transform-origin:center;
}

.vyora-card__badge--offer{
    background:var(--vyora-card-yellow);
    color:#1f2d3d;
}

.vyora-card__badge--out{
    background:var(--vyora-card-danger);
    color:#fff;
}

.vyora-card__body{
    display:flex;
    flex:1 1 auto;
    flex-direction:column;
    padding:17px 18px 18px;
    border-top:1px solid #eeeeee;
    font-family:var(--vyora-card-font);
}

.vyora-card__title,
.woocommerce ul.products li.product .vyora-card__title,
.woocommerce-page ul.products li.product .vyora-card__title,
.vyora-products .vyora-card__title{
    min-height:2.75em;
    margin:0 0 8px!important;
    padding:0!important;
    color:var(--vyora-card-text)!important;
    font-family:var(--vyora-card-font)!important;
    font-size:15px!important;
    font-weight:400!important;
    line-height:1.35!important;
    letter-spacing:0!important;
    text-transform:none!important;
}

.vyora-card__title a,
.vyora-products .vyora-card__title a{
    color:inherit!important;
    font:inherit!important;
    line-height:inherit!important;
    text-decoration:none!important;
}

.vyora-card__title a:hover,
.vyora-card__title a:focus{
    color:var(--vyora-card-text)!important;
}

.vyora-card__price-block{
    min-height:118px;
    margin-top:0;
    margin-bottom:15px;
}

.vyora-card__list-price{
    display:block;
    min-height:16px;
    margin:0 0 1px;
    color:var(--vyora-card-muted)!important;
    font-family:var(--vyora-card-font)!important;
    font-size:12px!important;
    font-weight:400!important;
    line-height:1.3!important;
    text-decoration-thickness:1px;
}

.vyora-card__main-price-row{
    display:flex;
    flex-wrap:wrap;
    align-items:center;
    gap:6px;
    min-height:34px;
}

.vyora-card__sale-price,
.vyora-card__regular-price{
    margin:0;
    color:#1f1f1f!important;
    font-family:var(--vyora-card-font)!important;
    font-size:27px!important;
    font-weight:400!important;
    line-height:1.15!important;
    letter-spacing:-.015em!important;
}

.vyora-card__sale-price .woocommerce-Price-amount,
.vyora-card__regular-price .woocommerce-Price-amount,
.vyora-card__list-price .woocommerce-Price-amount{
    color:inherit!important;
    font:inherit!important;
}

.vyora-card__inline-discount{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    min-height:22px;
    padding:2px 4px;
    border-radius:3px;
    background:var(--vyora-card-green);
    color:#fff;
    font-family:var(--vyora-card-font);
    font-size:13px;
    font-weight:700;
    line-height:1;
    white-space:nowrap;
}

.vyora-card__tax-transparency{
    display:flex;
    flex-wrap:wrap;
    align-items:baseline;
    gap:3px;
    margin-top:4px;
    color:var(--vyora-card-muted)!important;
    font-family:var(--vyora-card-font)!important;
    font-size:10px!important;
    font-weight:400!important;
    line-height:1.25!important;
}

.vyora-card__tax-transparency .woocommerce-Price-amount{
    color:inherit!important;
    font:inherit!important;
}

.vyora-card__tax-label{
    font-size:9px!important;
    letter-spacing:.01em;
}

.vyora-card__commercial-rows{
    display:flex;
    flex-direction:column;
    align-items:flex-start;
    gap:5px;
    min-height:0;
    margin-top:2px;
}

.vyora-card__installments{
    color:#333;
    font-family:var(--vyora-card-font);
    font-size:14px;
    font-weight:400;
    line-height:1.25;
}

.vyora-card__coupon{
    min-height:21px;
    line-height:1;
}

.vyora-card__coupon span{
    display:inline-block;
    padding:2px 4px;
    border-radius:2px;
    background:var(--vyora-card-blue-soft);
    color:var(--vyora-card-blue-accent);
    font-family:var(--vyora-card-font);
    font-size:14px;
    font-weight:600;
    line-height:1.2;
}

.vyora-card__free-shipping{
    color:var(--vyora-card-green);
    font-family:var(--vyora-card-font);
    font-size:14px;
    font-weight:600;
    line-height:1.25;
}

.vyora-card__price-unavailable{
    color:var(--vyora-card-muted);
    font-family:var(--vyora-card-font);
    font-size:14px;
    font-weight:400;
}

.vyora-card__purchase-row{
    display:grid;
    grid-template-columns:86px minmax(0,1fr);
    align-items:stretch;
    gap:10px;
    width:100%;
    margin-top:0;
}

.vyora-card__qty{
    display:grid;
    grid-template-columns:24px minmax(26px,1fr) 24px;
    align-items:stretch;
    min-width:0;
    min-height:40px;
    overflow:hidden;
    border:1px solid #d8dee7;
    border-radius:10px;
    background:#fff;
}

.vyora-card__qty-button{
    display:flex;
    align-items:center;
    justify-content:center;
    min-width:0;
    margin:0!important;
    padding:0!important;
    border:0!important;
    border-radius:0!important;
    background:#fff!important;
    color:var(--vyora-card-blue)!important;
    font-family:var(--vyora-card-font)!important;
    font-size:16px!important;
    font-weight:700!important;
    line-height:1!important;
    cursor:pointer;
    box-shadow:none!important;
}

.vyora-card__qty-button:hover,
.vyora-card__qty-button:focus-visible{
    background:#f5f7fa!important;
    color:#0c2d55!important;
}

.vyora-card__qty-value{
    display:flex;
    align-items:center;
    justify-content:center;
    min-width:0;
    height:38px;
    margin:0;
    padding:0 1px;
    border-right:1px solid #edf0f4;
    border-left:1px solid #edf0f4;
    background:#fff;
    color:var(--vyora-card-blue);
    font-family:var(--vyora-card-font);
    font-size:14px;
    font-weight:600;
    font-style:normal;
    font-variant-numeric:tabular-nums;
    line-height:1;
    text-align:center;
    text-decoration:none;
    text-shadow:none;
    user-select:none;
}

.vyora-card__qty-input{
    display:none!important;
}

.vyora-card__qty-button:disabled{
    opacity:.28!important;
    cursor:not-allowed!important;
    background:#fff!important;
    color:var(--vyora-card-blue)!important;
}

.woocommerce ul.products li.product .vyora-card__button,
.woocommerce-page ul.products li.product .vyora-card__button,
.vyora-card__button{
    display:flex!important;
    align-items:center!important;
    justify-content:center!important;
    width:100%!important;
    min-height:46px!important;
    margin:0!important;
    padding:10px 16px!important;
    border:1px solid var(--vyora-card-yellow)!important;
    border-radius:10px!important;
    background:var(--vyora-card-yellow)!important;
    color:#102f55!important;
    font-family:var(--vyora-card-font)!important;
    font-size:14px!important;
    font-weight:800!important;
    line-height:1.2!important;
    text-align:center!important;
    text-decoration:none!important;
    text-transform:uppercase!important;
    letter-spacing:.025em!important;
    box-shadow:none!important;
    transition:transform .16s ease,box-shadow .16s ease!important;
}

.woocommerce ul.products li.product .vyora-card__button:hover,
.woocommerce-page ul.products li.product .vyora-card__button:hover,
.vyora-card__button:hover{
    background:var(--vyora-card-yellow)!important;
    color:#102f55!important;
    transform:translateY(-1px);
    box-shadow:0 7px 18px rgba(246,233,47,.24)!important;
}

@media (max-width:767px){
    .vyora-card__media{
        min-height:180px;
        padding:14px;
    }

    .vyora-card__body{
        padding:14px;
    }

    .vyora-card__title,
    .woocommerce ul.products li.product .vyora-card__title,
    .woocommerce-page ul.products li.product .vyora-card__title,
    .vyora-products .vyora-card__title{
        min-height:0;
        margin-bottom:7px!important;
        font-size:14px!important;
    }

    .vyora-card__price-block{
        min-height:108px;
        margin-bottom:12px;
    }

    .vyora-card__sale-price,
    .vyora-card__regular-price{
        font-size:24px!important;
    }
}

@media (max-width:640px){
    .vyora-card__badges{
        width:102px;
        height:102px;
    }

    .vyora-card__badge{
        top:18px;
        left:-36px;
        width:142px;
        min-height:30px;
        font-size:13px;
    }
}

@media (max-width:420px){
    .vyora-card__purchase-row{
        grid-template-columns:80px minmax(0,1fr);
        gap:7px;
    }

    .vyora-card__qty{
        grid-template-columns:23px minmax(24px,1fr) 23px;
    }
}


/* v0.1.7 — catálogo de 5 columnas en Tienda y taxonomías de producto.
   Afecta sólo archivos WooCommerce; el carrusel de Inicio sigue siendo independiente. */
@media (min-width:1201px){
    body.vyora-product-archive .woocommerce ul.products{
        display:grid!important;
        grid-template-columns:repeat(5,minmax(0,1fr))!important;
        gap:28px 22px!important;
        align-items:stretch!important;
    }

    body.vyora-product-archive .woocommerce ul.products::before,
    body.vyora-product-archive .woocommerce ul.products::after{
        display:none!important;
        content:none!important;
    }

    body.vyora-product-archive .woocommerce ul.products li.product,
    body.vyora-product-archive .woocommerce-page ul.products li.product,
    body.vyora-product-archive .woocommerce ul.products li.product.vyora-card-item{
        float:none!important;
        clear:none!important;
        width:auto!important;
        max-width:none!important;
        margin:0!important;
    }
}

/* Reducción progresiva sólo cuando el ancho físico ya no permite cinco cards legibles. */
@media (min-width:981px) and (max-width:1200px){
    body.vyora-product-archive .woocommerce ul.products{
        display:grid!important;
        grid-template-columns:repeat(4,minmax(0,1fr))!important;
        gap:24px 20px!important;
    }

    body.vyora-product-archive .woocommerce ul.products li.product{
        float:none!important;
        width:auto!important;
        margin:0!important;
    }
}

@media (min-width:701px) and (max-width:980px){
    body.vyora-product-archive .woocommerce ul.products{
        display:grid!important;
        grid-template-columns:repeat(3,minmax(0,1fr))!important;
        gap:20px 18px!important;
    }

    body.vyora-product-archive .woocommerce ul.products li.product{
        float:none!important;
        width:auto!important;
        margin:0!important;
    }
}

@media (max-width:700px){
    body.vyora-product-archive .woocommerce ul.products{
        display:grid!important;
        grid-template-columns:repeat(2,minmax(0,1fr))!important;
        gap:16px 12px!important;
    }

    body.vyora-product-archive .woocommerce ul.products li.product{
        float:none!important;
        width:auto!important;
        margin:0!important;
    }
}


/* v0.1.8 — selector de cantidades más compacto y botón Comprar con más protagonismo */


/* v0.1.9 — feedback de compra dentro de la card.
   El enlace nativo "Ver carrito" de WooCommerce no se muestra dentro de las cards. */
.vyora-product-card a.added_to_cart,
.vyora-product-card a.added_to_cart.wc-forward{
    display:none!important;
}

.vyora-card__cart-feedback{
    width:100%;
    margin:7px 0 0;
    padding:7px 2px 0;
    border-top:1px solid #e8edf2;
    background:transparent;
    color:var(--vyora-card-blue);
    font-family:var(--vyora-card-font);
    font-size:11.5px;
    font-weight:650;
    line-height:1.2;
    white-space:nowrap;
    text-align:left;
}

@media (max-width:700px){
    .vyora-card__cart-feedback{
        font-size:11px;
    }
}


/* =========================================================
   v0.1.14 — FOOTER ÚNICO Y ALINEACIÓN DE TODAS LAS CARDS
   Cards es el único propietario del layout de la tarjeta.
   ========================================================= */
.vyora-card__footer{
    display:flex;
    flex:0 0 auto;
    flex-direction:column;
    width:100%;
    margin-top:auto;
}

/* Slot logístico siempre presente: todas las cards reservan exactamente
   la misma altura aunque no tengan una leyenda visible. */
.vyora-card__service-slot{
    display:flex;
    flex:0 0 42px;
    align-items:center;
    justify-content:center;
    width:100%;
    min-height:42px;
    margin:0 0 7px;
}

.vyora-card__service-slot--empty{
    visibility:hidden;
}

.vyora-card__service-badge{
    display:flex;
    align-items:center;
    justify-content:center;
    width:100%;
    min-height:42px;
    padding:7px 9px;
    border:0;
    border-radius:6px;
    box-sizing:border-box;
    font-family:var(--vyora-card-font);
    font-size:11px;
    font-weight:700;
    line-height:1.15;
    letter-spacing:0;
    text-align:center;
    text-transform:uppercase;
    white-space:normal;
}

/* Presentación Express provista semánticamente por Vyora - Envíos. */
.vyora-card__service-badge--express{
    background:#159447;
    color:#ffffff;
}

/* Ningún CTA decide su propia posición vertical: el footer completo es el que
   se ancla al fondo. Así simples, variables y agotados terminan en la misma línea. */
.vyora-card__footer > .vyora-card__purchase-row,
.vyora-card__footer > .vyora-card__button{
    flex:0 0 auto;
    margin:0!important;
}

/* Si existe feedback del carrito, se ubica ARRIBA del badge/CTA para que el
   botón final nunca deje de estar alineado con el resto de la fila. */
.vyora-card__footer > .vyora-card__cart-feedback{
    order:-1;
    margin:0 0 7px;
}

@media (max-width:767px){
    .vyora-card__service-slot{
        flex-basis:40px;
        min-height:40px;
        margin-bottom:6px;
    }

    .vyora-card__service-badge{
        min-height:40px;
        padding:6px 8px;
        font-size:10px;
    }
}


/* =========================================================
   v0.1.15 — DECIMALES DEL PRECIO PRINCIPAL
   Centavos más chicos, subrayados y elevados.
   ========================================================= */
.vyora-card__sale-price .vyora-money__decimals,
.vyora-card__regular-price .vyora-money__decimals{
    display:inline-block !important;
    position:relative !important;
    top:-0.34em !important;
    margin-left:1px !important;
    font-size:.58em !important;
    font-weight:inherit !important;
    line-height:1 !important;
    letter-spacing:0 !important;
    vertical-align:baseline !important;
    text-decoration-line:underline !important;
    text-decoration-thickness:1px !important;
    text-underline-offset:2px !important;
    text-decoration-skip-ink:none !important;
}

/* El precio tachado y el precio sin impuestos conservan su tamaño compacto. */
.vyora-card__list-price .vyora-money__decimals,
.vyora-card__tax-price .vyora-money__decimals,
.vyora-card__tax-transparency .vyora-money__decimals{
    font-size:inherit !important;
    position:static !important;
    text-decoration:none !important;
}


/* =========================================================
   v0.1.16 — ALINEACIÓN VERTICAL DE CONTENIDO
   =========================================================
   Objetivo:
   - El título ocupa SIEMPRE el espacio de 4 renglones.
   - Si supera 4 renglones, se corta con puntos suspensivos.
   - Si ocupa menos, el espacio se conserva.
   - El precio principal comienza a la misma altura en todas las cards.
   - El espacio de precio anterior también existe siempre, haya o no oferta.
*/

/* Área fija de título: exactamente 4 líneas en desktop. */
.vyora-card__title,
.woocommerce ul.products li.product .vyora-card__title,
.woocommerce-page ul.products li.product .vyora-card__title,
.vyora-products .vyora-card__title{
    height:5.4em !important;
    min-height:5.4em !important;
    max-height:5.4em !important;
    margin:0 0 8px !important;
    overflow:hidden !important;
}

/* Clamp real del texto a 4 líneas con ellipsis. */
.vyora-card__title > a,
.vyora-products .vyora-card__title > a{
    display:-webkit-box !important;
    width:100% !important;
    max-height:5.4em !important;
    overflow:hidden !important;
    -webkit-box-orient:vertical !important;
    -webkit-line-clamp:4 !important;
    line-clamp:4 !important;
    text-overflow:ellipsis !important;
}

/* Slot previo al precio principal siempre presente.
   Evita que un producto en oferta baje el precio respecto de uno sin oferta. */
.vyora-card__list-price-slot{
    display:flex;
    align-items:flex-end;
    width:100%;
    height:17px;
    min-height:17px;
    max-height:17px;
    margin:0 0 1px;
    overflow:hidden;
}

.vyora-card__list-price-slot--empty{
    visibility:hidden;
}

/* El del tachado vive ahora dentro del slot y no agrega altura propia extra. */
.vyora-card__list-price-slot .vyora-card__list-price{
    min-height:0;
    margin:0;
}

/* Fila de precio principal idéntica en todas las cards. */
.vyora-card__main-price-row{
    min-height:34px !important;
    max-height:34px;
    align-items:center !important;
}

/* Bloque completo de precio con geometría estable. */
.vyora-card__price-block{
    min-height:118px !important;
}

/* Mobile: también se reservan 4 líneas; cambia sólo la métrica por fuente 14px. */
@media (max-width:767px){
    .vyora-card__title,
    .woocommerce ul.products li.product .vyora-card__title,
    .woocommerce-page ul.products li.product .vyora-card__title,
    .vyora-products .vyora-card__title{
        height:5.4em !important;
        min-height:5.4em !important;
        max-height:5.4em !important;
    }

    .vyora-card__title > a,
    .vyora-products .vyora-card__title > a{
        max-height:5.4em !important;
        -webkit-line-clamp:4 !important;
        line-clamp:4 !important;
    }

    .vyora-card__price-block{
        min-height:108px !important;
    }
}


/* =========================================================
   v0.1.19 — BADGES DE DESCUENTO EN AZUL
   =========================================================
   El badge comercial de descuento se diferencia visualmente del badge
   verde de Envío Express para que no compitan entre sí.
*/
.vyora-card__inline-discount,
.vyora-card__discount-badge,
.woocommerce ul.products li.product .vyora-card__inline-discount,
.woocommerce-page ul.products li.product .vyora-card__inline-discount{
    background:#1769d2 !important;
    color:#ffffff !important;
    border-color:#1769d2 !important;
}
