/**
 * AxA Promos — Mercado Pago
 * Todo prefijado axapromosmp-. Los colores salen de variables para que el BO las pise.
 *
 * @author    Aníbal Adrián Vidal
 * @copyright 2026 AxA Computación S.A.
 * @license   Propietario
 */

.axapromosmp-block {
    box-sizing: border-box;
    margin: 14px 0;
    padding: 14px 16px;
    border: 1px solid var(--axapromosmp-border, #cfe4f2);
    border-left: 4px solid var(--axapromosmp-mp, #009ee3);
    border-radius: 10px;
    background: var(--axapromosmp-bg, #ffffff);
    color: var(--axapromosmp-text, #243342);
    font-size: 14px;
    line-height: 1.45;
    max-width: 100%;
}

.axapromosmp-block *,
.axapromosmp-block *::before,
.axapromosmp-block *::after {
    box-sizing: border-box;
}

.axapromosmp-block [hidden] {
    display: none !important;
}

/* El bloque no puede heredar cursivas ni alineaciones del tema: en ZOneTheme salía
   todo en itálica y el label a la derecha. Se normaliza acá y no en el tema. */
.axapromosmp-block,
.axapromosmp-block p,
.axapromosmp-block ul,
.axapromosmp-block li,
.axapromosmp-block span,
.axapromosmp-block div,
.axapromosmp-block label,
.axapromosmp-block strong,
.axapromosmp-block button,
.axapromosmp-block input,
.axapromosmp-block a {
    font-style: normal;
    text-align: left;
}

/* ---------- iconos: SVG dibujado por el módulo, sin depender de ninguna fuente ---------- */

.axapromosmp-block .axapromosmp-icon,
.axapromosmp-sellerbar .axapromosmp-icon,
.axapromosmp-modal .axapromosmp-icon {
    display: inline-block;
    width: 1em;
    height: 1em;
    vertical-align: -0.125em;
    flex: none;
    fill: currentColor;
}

/* ---------- encabezado ---------- */

.axapromosmp-head {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    margin-bottom: 8px;
}

.axapromosmp-logo {
    display: block;
    width: auto;
    height: 26px;
    max-width: 100%;
}

.axapromosmp-head-text {
    font-weight: 700;
    font-size: 15px;
}

/* ---------- estado 0 ---------- */

.axapromosmp-lead {
    margin: 0 0 10px;
    color: var(--axapromosmp-muted, #6b7a89);
    font-size: 13px;
}

.axapromosmp-cta {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 10px 16px;
    border: 0;
    border-radius: 8px;
    background: var(--axapromosmp-mp, #009ee3);
    color: #ffffff;
    font-size: 14px;
    font-weight: 700;
    line-height: 1.2;
    cursor: pointer;
    text-align: left;
    transition: filter 0.15s ease;
}

.axapromosmp-cta:hover,
.axapromosmp-cta:focus {
    filter: brightness(0.92);
    color: #ffffff;
}

.axapromosmp-cta:focus-visible {
    outline: 3px solid var(--axapromosmp-text, #243342);
    outline-offset: 2px;
}

/* ---------- estado 1 ---------- */

.axapromosmp-label {
    display: block;
    margin-bottom: 6px;
    font-weight: 700;
    font-size: 13px;
}

.axapromosmp-field {
    position: relative;
    display: inline-flex;
    align-items: center;
    max-width: 100%;
}

.axapromosmp-input {
    width: 160px;
    max-width: 100%;
    padding: 10px 46px 10px 12px;
    border: 1px solid var(--axapromosmp-border, #cfe4f2);
    border-radius: 8px;
    background: #ffffff;
    color: var(--axapromosmp-text, #243342);
    font-size: 18px;
    font-weight: 700;
    letter-spacing: 3px;
}

.axapromosmp-input:focus {
    border-color: var(--axapromosmp-mp, #009ee3);
    outline: 2px solid var(--axapromosmp-mp, #009ee3);
    outline-offset: 1px;
}

.axapromosmp-counter {
    position: absolute;
    right: 10px;
    color: var(--axapromosmp-muted, #6b7a89);
    font-size: 12px;
    letter-spacing: 0;
}

.axapromosmp-hint {
    margin: 8px 0 0;
    color: var(--axapromosmp-muted, #6b7a89);
    font-size: 12px;
}

/* ---------- estado 2: resultado ---------- */

.axapromosmp-result:empty {
    display: none;
}

.axapromosmp-card {
    margin-top: 12px;
    padding-top: 12px;
    border-top: 1px dashed var(--axapromosmp-border, #cfe4f2);
}

.axapromosmp-brand {
    margin: 0 0 10px;
    font-size: 13px;
    color: var(--axapromosmp-muted, #6b7a89);
}

.axapromosmp-brand strong {
    color: var(--axapromosmp-text, #243342);
}

/* ------------------------------------------------------------------ */
/*  Grilla de opciones                                                 */
/*                                                                     */
/*  Las columnas las decide el ANCHO DEL COMPONENTE, no el del monitor: */
/*  el bloque puede caer en una columna angosta de la ficha, y ahi el   */
/*  ancho de la ventana no dice nada util. Lo mide front.js con un      */
/*  ResizeObserver y escribe data-axapromosmp-cols; aca solo esta el    */
/*  reparto.                                                           */
/*                                                                     */
/*    desde 680 px  -> 3 columnas                                      */
/*    460 a 679 px  -> 2 columnas                                      */
/*    hasta 459 px  -> 1 columna                                       */
/* ------------------------------------------------------------------ */

.axapromosmp-gridhead {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 6px 14px;
    flex-wrap: wrap;
    margin: 0 0 9px;
}

.axapromosmp-gridtitle {
    font-size: 15px;
    font-weight: 700;
    color: var(--axapromosmp-text, #243342);
}

.axapromosmp-gridamount {
    font-size: 12px;
    color: var(--axapromosmp-muted, #6b7a89);
}

.axapromosmp-gridamount strong {
    color: var(--axapromosmp-text, #243342);
    font-weight: 700;
}

.axapromosmp-grid {
    display: grid;
    gap: 10px;
    grid-template-columns: minmax(0, 1fr);
    margin: 0;
    padding: 0;
    list-style: none;
}

.axapromosmp-grid[data-axapromosmp-cols="2"] {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.axapromosmp-grid[data-axapromosmp-cols="3"] {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.axapromosmp-opt {
    display: flex;
    flex-direction: column;
    gap: 3px;
    padding: 12px 14px;
    border: 1px solid var(--axapromosmp-border, #cfe4f2);
    border-radius: 10px;
    background: #ffffff;
    /* minmax(0,1fr) arriba y esto aca: un importe largo estira la tarjeta, nunca la grilla. */
    min-width: 0;
}

.axapromosmp-opt-n {
    font-size: 14px;
    font-weight: 600;
    color: var(--axapromosmp-text, #243342);
}

.axapromosmp-opt-amount {
    font-size: 24px;
    font-weight: 800;
    line-height: 1.15;
    color: var(--axapromosmp-text, #243342);
    /* Un importe que no entra se parte antes que desbordar: el cliente tiene que poder
       leerlo entero sin correr la pantalla para el costado. */
    overflow-wrap: anywhere;
}

.axapromosmp-opt-total {
    font-size: 13px;
    color: var(--axapromosmp-muted, #6b7a89);
}

.axapromosmp-opt-legal {
    font-size: 12px;
    color: var(--axapromosmp-muted, #6b7a89);
}

/* "Destacar suavemente", y solo cuando la respuesta dice que es sin interes. */
.axapromosmp-opt--free {
    border-color: var(--axapromosmp-free, #137a3f);
    background: #f4faf6;
}

@supports (background: color-mix(in srgb, red 7%, white)) {
    /* Si cambiaron el color del destacado desde el BO, el fondo lo sigue. */
    .axapromosmp-opt--free {
        background: color-mix(in srgb, var(--axapromosmp-free, #137a3f) 7%, #ffffff);
    }
}

.axapromosmp-opt-badge {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    align-self: flex-start;
    margin-top: 1px;
    padding: 1px 8px;
    border-radius: 999px;
    background: var(--axapromosmp-free, #137a3f);
    color: #ffffff;
    font-size: 12px;
    font-weight: 700;
}


.axapromosmp-group-title {
    display: flex;
    align-items: center;
    gap: 6px;
    margin: 0 0 8px;
    font-size: 13px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.axapromosmp-group--free .axapromosmp-group-title {
    color: var(--axapromosmp-free, #137a3f);
}

.axapromosmp-group--interest {
    margin-top: 16px;
    opacity: 0.86;
}

.axapromosmp-group--interest .axapromosmp-group-title {
    color: var(--axapromosmp-muted, #6b7a89);
}

.axapromosmp-rows {
    margin: 0;
    padding: 0;
    list-style: none;
}

.axapromosmp-row {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 4px 8px;
    padding: 7px 0;
    border-bottom: 1px solid rgba(0, 0, 0, 0.06);
}

.axapromosmp-row:last-child {
    border-bottom: 0;
}

.axapromosmp-count {
    font-weight: 700;
    font-size: 15px;
}

.axapromosmp-amount {
    font-size: 21px;
    font-weight: 800;
    line-height: 1.1;
}

.axapromosmp-group--free .axapromosmp-amount {
    color: var(--axapromosmp-free, #137a3f);
    font-size: 24px;
}

.axapromosmp-badge {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 2px 8px;
    border-radius: 999px;
    background: var(--axapromosmp-free, #137a3f);
    color: #ffffff;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.axapromosmp-total {
    color: var(--axapromosmp-muted, #6b7a89);
    font-size: 12px;
}

.axapromosmp-legal {
    flex-basis: 100%;
    color: var(--axapromosmp-muted, #6b7a89);
    font-size: 11px;
    line-height: 1.35;
}

.axapromosmp-single {
    margin: 10px 0 0;
    font-size: 13px;
}

.axapromosmp-single strong {
    font-size: 15px;
}

/**
 * Leyenda legal.
 *
 * Letra chica y tono secundario a proposito: tiene que estar y poder leerse, pero no
 * competir con el boton que la tiene arriba. El borde de puntos la separa del bloque sin
 * meter otra caja.
 *
 * white-space: pre-line respeta los saltos de linea que se hayan escrito en el BO sin que
 * la plantilla tenga que meter <br>, o sea sin un solo nofilter en el camino.
 *
 * Se define SOLO aca. front.css se carga en la ficha, en el carrito y tambien en el back
 * office, asi que con una definicion alcanza para los cuatro lugares donde aparece.
 */
.axapromosmp-legalnote {
    margin: 10px 0 0;
    padding-top: 9px;
    border-top: 1px dotted var(--axapromosmp-border, #cfe4f2);
    color: var(--axapromosmp-muted, #6b7a89);
    font-size: 11px;
    line-height: 1.45;
    white-space: pre-line;
}


.axapromosmp-note {
    margin: 12px 0 0;
    color: var(--axapromosmp-muted, #6b7a89);
    font-size: 11px;
    line-height: 1.4;
}

/* ---------- estado 3: sin resultados ---------- */

.axapromosmp-empty {
    margin-top: 12px;
    padding: 10px 12px;
    border-radius: 8px;
    background: rgba(0, 0, 0, 0.035);
    font-size: 13px;
}

.axapromosmp-empty p {
    margin: 0 0 8px;
}

.axapromosmp-empty p:last-child {
    margin-bottom: 0;
}

.axapromosmp-link {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: var(--axapromosmp-mp, #009ee3);
    font-weight: 700;
    text-decoration: underline;
}

/* ---------- skeleton ---------- */

.axapromosmp-skeleton {
    margin-top: 12px;
}

.axapromosmp-skeleton span {
    display: block;
    height: 14px;
    margin-bottom: 9px;
    border-radius: 4px;
    background: linear-gradient(90deg, rgba(0, 0, 0, 0.07) 25%, rgba(0, 0, 0, 0.12) 37%, rgba(0, 0, 0, 0.07) 63%);
    background-size: 400% 100%;
    animation: axapromosmp-shimmer 1.3s ease-in-out infinite;
}

.axapromosmp-skeleton span:nth-child(1) {
    width: 45%;
}

.axapromosmp-skeleton span:nth-child(2) {
    width: 85%;
    height: 22px;
}

.axapromosmp-skeleton span:nth-child(3) {
    width: 70%;
}

.axapromosmp-skeleton span:nth-child(4) {
    width: 60%;
    margin-bottom: 0;
}

@keyframes axapromosmp-shimmer {
    0% {
        background-position: 100% 50%;
    }

    100% {
        background-position: 0 50%;
    }
}

@media (prefers-reduced-motion: reduce) {
    .axapromosmp-skeleton span {
        animation: none;
    }

    .axapromosmp-cta {
        transition: none;
    }
}

/* ---------- 360 px ---------- */

@media (max-width: 420px) {
    .axapromosmp-block {
        padding: 12px;
    }

    .axapromosmp-cta {
        width: 100%;
        justify-content: center;
        text-align: center;
    }

    .axapromosmp-input {
        width: 100%;
    }

    .axapromosmp-field {
        display: flex;
        width: 100%;
    }

    .axapromosmp-amount {
        font-size: 19px;
    }

    .axapromosmp-group--free .axapromosmp-amount {
        font-size: 21px;
    }
}
