/* ============================================
   COD MODAL — UI
   Diseño claro estilo Apple · acento verde COD
   Tipografía system (SF) · superficies limpias
   sombras suaves · urgencia atenuada
   ============================================ */

/* Fuente auto-alojada (Inter variable, estilo Shopify checkout) */
@font-face {
    font-family: "Inter";
    font-style: normal;
    font-weight: 100 900;
    font-display: swap;
    src: url("../fonts/InterVariable.woff2") format("woff2");
}

/* ---- Design tokens (scoped a los modales) ----
   Personalizables desde fuera con las variables públicas --cod-* (en :root o en
   cualquier ancestro), p. ej. desde el tema, Bricks o WooCommerce → COD Modal →
   Apariencia:  :root { --cod-accent: var(--peach); --cod-font: "Montserrat", sans-serif; }
   Los tonos derivados (-050, -ring) se calculan del acento si no se definen. */
.modal-overlay,
.discount-modal,
.no-coverage-modal {
    --font: var(--cod-font, "Inter", -apple-system, BlinkMacSystemFont, "SF Pro Text", "Helvetica Neue", "Segoe UI", Roboto, Arial, sans-serif);

    --text: var(--cod-text, #1d1d1f);
    --text-2: var(--cod-text-2, #6e6e73);
    --text-3: var(--cod-text-3, #86868b);

    --bg: var(--cod-bg, #ffffff);
    --bg-2: var(--cod-bg-2, #f5f5f7);
    --border: var(--cod-border, #d2d2d7);
    --border-2: var(--cod-border-2, #e8e8ed);

    --green: var(--cod-accent, #16a34a);
    --green-700: var(--cod-accent-dark, color-mix(in srgb, var(--green) 82%, #000));
    --green-050: var(--cod-accent-soft, color-mix(in srgb, var(--green) 6%, #fff));
    --green-ring: color-mix(in srgb, var(--green) 14%, transparent);

    --blue: var(--cod-card, #0071e3);
    --blue-700: var(--cod-card-dark, color-mix(in srgb, var(--blue) 85%, #000));
    --blue-050: var(--cod-card-soft, color-mix(in srgb, var(--blue) 7%, #fff));

    --red: var(--cod-danger, #ff3b30);
    --red-600: color-mix(in srgb, var(--red) 80%, #000);
    --red-ring: color-mix(in srgb, var(--red) 16%, transparent);

    --amber: var(--cod-warning, #ff9f0a);
    --amber-050: color-mix(in srgb, var(--amber) 9%, #fff);

    --radius: var(--cod-radius, 20px);
    --radius-md: var(--cod-radius-md, 14px);
    --radius-sm: var(--cod-radius-sm, 11px);
    --radius-xs: var(--cod-radius-xs, 8px);

    --shadow-1: 0 1px 2px rgba(0, 0, 0, 0.04);
    --shadow-2: 0 6px 20px -8px rgba(0, 0, 0, 0.14);
    --shadow-modal: var(--cod-shadow-modal, 0 28px 70px -18px rgba(0, 0, 0, 0.32), 0 10px 28px -16px rgba(0, 0, 0, 0.22));

    --ease: cubic-bezier(0.22, 1, 0.36, 1);
    --dur: 0.28s;
}

/* Reset con scope a los modales */
.modal-overlay *,
.modal-overlay *::before,
.modal-overlay *::after,
.discount-modal *,
.discount-modal *::before,
.discount-modal *::after,
.no-coverage-modal *,
.no-coverage-modal *::before,
.no-coverage-modal *::after {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    font-family: var(--font);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

/* ============================================
   OVERLAY + CONTENEDOR
   ============================================ */
.modal-overlay {
    display: none;
    position: fixed;
    inset: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.45);
    z-index: 9999;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    backdrop-filter: saturate(180%) blur(20px);
    -webkit-backdrop-filter: saturate(180%) blur(20px);
    font-family: var(--font);
}

.modal-overlay.active {
    display: block;
    animation: modalOverlayIn 0.4s var(--ease);
}

@keyframes modalOverlayIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

.modal-container {
    background: var(--bg);
    border-radius: var(--radius);
    width: 100%;
    max-width: 460px;
    height: auto;
    overflow: visible;
    position: relative;
    box-shadow: var(--shadow-modal);
    margin: 24px auto;
    transform: translate3d(0, 24px, 0) scale(0.98);
    opacity: 0;
    transition: transform 0.5s var(--ease), opacity 0.35s ease, height 0.5s var(--ease);
    font-family: var(--font);
}

.modal-overlay.active .modal-container {
    transform: translate3d(0, 0, 0) scale(1);
    opacity: 1;
}

/* Estado de procesamiento */
.modal-container.processing {
    height: 280px;
    overflow: hidden;
}

.modal-container.processing .modal-header,
.modal-container.processing .modal-content,
.modal-container.processing .guarantee-section {
    display: none;
}

.modal-container.processing .loader-overlay {
    position: relative;
    height: 280px;
    display: flex !important;
    align-items: center;
    justify-content: center;
}

/* ============================================
   HEADER (claro)
   ============================================ */
.modal-header {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 20px 20px 16px;
    background: var(--bg);
    border-radius: var(--radius) var(--radius) 0 0;
    border-bottom: 1px solid var(--border-2);
    position: relative;
}

.modal-header-icon {
    width: 42px;
    height: 42px;
    background: var(--green-050);
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    color: var(--green);
}

.modal-header-icon svg {
    width: 22px;
    height: 22px;
    stroke: var(--green);
}

.modal-header-info {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 6px;
}

.modal-title {
    font-size: 19px;
    font-weight: 600;
    color: var(--text);
    letter-spacing: -0.022em;
    line-height: 1.25;
}

.modal-header-badge {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    background: var(--green-050);
    color: var(--green-700);
    font-size: 11px;
    font-weight: 600;
    padding: 4px 9px;
    border-radius: 7px;
    letter-spacing: 0;
}

.modal-header-badge svg {
    color: var(--green-700);
}

.modal-social-proof {
    display: flex;
    align-items: center;
    gap: 6px;
}

.modal-social-dot {
    width: 7px;
    height: 7px;
    background: var(--green);
    border-radius: 50%;
    animation: socialDotPulse 2.4s ease-in-out infinite;
}

@keyframes socialDotPulse {
    0%, 100% { opacity: 1; box-shadow: 0 0 0 0 color-mix(in srgb, var(--green) 35%, transparent); }
    50% { opacity: 0.85; box-shadow: 0 0 0 5px color-mix(in srgb, var(--green) 0%, transparent); }
}

.modal-social-text {
    font-size: 12px;
    color: var(--text-3);
    font-weight: 500;
}

.modal-overlay .modal-close {
    background: var(--bg-2) !important;
    border: none !important;
    font-size: 18px !important;
    color: var(--text-3) !important;
    cursor: pointer;
    padding: 0 !important;
    width: 30px !important;
    height: 30px !important;
    display: flex !important;
    align-items: center;
    justify-content: center;
    border-radius: 50% !important;
    transition: background var(--dur) var(--ease), color var(--dur) var(--ease);
    flex-shrink: 0;
    align-self: center;
    margin-left: 4px;
    line-height: 1;
    box-shadow: none !important;
    text-decoration: none !important;
}

.modal-overlay .modal-close:hover,
.modal-overlay .modal-close:focus,
.modal-overlay .modal-close:active {
    background: var(--border-2) !important;
    color: var(--text) !important;
    box-shadow: none !important;
    text-decoration: none !important;
    border: none !important;
    outline: none !important;
}

/* ============================================
   CONTENIDO
   ============================================ */
.modal-content {
    padding: 22px 20px;
}

/* ---- OFERTAS ---- */
.offers-section {
    margin-bottom: 20px;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.offer-item {
    border: 1px solid var(--border);
    border-radius: var(--radius-md);
    padding: 14px 16px;
    cursor: pointer;
    transition: border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease), background var(--dur) var(--ease);
    position: relative;
    background: var(--bg);
}

.offer-item:hover {
    border-color: #b9b9c0;
    box-shadow: var(--shadow-2);
}

.offer-item.selected {
    border-color: var(--green);
    background: var(--green-050);
    box-shadow: 0 0 0 3px var(--green-ring);
    animation: offerSelect 0.3s var(--ease);
}

@keyframes offerSelect {
    from { box-shadow: 0 0 0 0 var(--green-ring); }
    to { box-shadow: 0 0 0 3px var(--green-ring); }
}

@keyframes variationsSlide {
    from { opacity: 0; transform: translateY(-6px); }
    to { opacity: 1; transform: translateY(0); }
}

.offer-content {
    display: flex;
    align-items: center;
    gap: 13px;
}

.offer-image {
    width: 58px;
    height: 58px;
    object-fit: cover;
    border-radius: 12px;
    background: var(--bg-2);
    border: 1px solid var(--border-2);
    flex-shrink: 0;
}

.offer-details {
    flex: 1;
    min-width: 0;
}

.offer-title {
    font-size: 15px;
    font-weight: 600;
    color: var(--text);
    margin-bottom: 4px;
    line-height: 1.3;
    letter-spacing: -0.01em;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.offer-badge {
    display: inline-block;
    padding: 3px 9px;
    border-radius: 100px;
    font-size: 11px;
    font-weight: 600;
    color: #fff;
    background: var(--green);
    margin-top: 2px;
    letter-spacing: 0.1px;
}

.offer-price {
    font-size: 20px;
    font-weight: 600;
    color: var(--text);
    white-space: nowrap;
    letter-spacing: -0.02em;
    font-variant-numeric: tabular-nums;
}

.offer-original-price {
    font-size: 13px;
    color: var(--text-3);
    text-decoration: line-through;
    margin-bottom: 2px;
    text-align: right;
    font-variant-numeric: tabular-nums;
}

/* Variaciones dentro de ofertas */
.offer-variations {
    margin-top: 12px;
    padding-top: 12px;
    border-top: 1px solid var(--border-2);
    animation: variationsSlide 0.3s var(--ease);
}

.variation-row {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 8px;
}

.variation-row:last-child {
    margin-bottom: 0;
}

.variation-number {
    font-size: 18px;
}

.modal-overlay .variation-select-offer {
    flex: 1;
    padding: 11px 40px 11px 14px !important;
    border: 1px solid var(--border) !important;
    border-radius: var(--radius-sm) !important;
    font-size: 16px !important;
    color: var(--text) !important;
    background-color: var(--bg) !important;
    transition: border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease);
    appearance: none !important;
    -webkit-appearance: none !important;
    -moz-appearance: none !important;
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%2386868b' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e") !important;
    background-position: right 12px center !important;
    background-repeat: no-repeat !important;
    background-size: 16px !important;
    height: auto !important;
    line-height: 1.4 !important;
    box-shadow: none !important;
}

.modal-overlay .variation-select-offer:focus {
    outline: none !important;
    border-color: var(--green) !important;
    box-shadow: 0 0 0 4px var(--green-ring) !important;
}

.modal-overlay .variation-select-offer.error {
    border-color: var(--red) !important;
    box-shadow: 0 0 0 4px var(--red-ring) !important;
}

/* ---- DESCUENTO APLICADO (banner) ---- */
.discount-banner {
    background: var(--green-050);
    border: 1px solid color-mix(in srgb, var(--green) 25%, transparent);
    border-radius: var(--radius-sm);
    padding: 12px 14px;
    margin-bottom: 16px;
    display: none;
    animation: bannerSlideIn 0.45s var(--ease);
}

.discount-banner.show {
    display: flex;
    align-items: center;
    gap: 10px;
}

.discount-banner-text {
    flex: 1;
    font-weight: 600;
    color: var(--green-700);
    font-size: 14px;
}

.discount-banner span:last-child {
    font-weight: 700;
    color: var(--green-700);
    font-variant-numeric: tabular-nums;
}

@keyframes bannerSlideIn {
    from { opacity: 0; transform: translateY(-8px); }
    to { opacity: 1; transform: translateY(0); }
}

@keyframes fadeIn {
    from { opacity: 0; transform: translateY(-8px); }
    to { opacity: 1; transform: translateY(0); }
}

@keyframes fadeOut {
    from { opacity: 1; }
    to { opacity: 0; }
}

.discount-banner.fade-out {
    animation: fadeOut 0.5s ease forwards;
}

/* ---- TOTALES ---- */
.totals-section {
    background: var(--bg-2);
    border: 1px solid var(--border-2);
    border-radius: var(--radius-md);
    padding: 16px 18px;
    margin-bottom: 22px;
}

.total-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 11px;
    font-size: 15px;
    color: var(--text-2);
}

.total-row span:last-child {
    font-variant-numeric: tabular-nums;
}

.total-row.discount {
    color: var(--green-700);
    font-weight: 600;
    animation: discountRowIn 0.45s var(--ease);
}

@keyframes discountRowIn {
    from { opacity: 0; transform: translateY(-6px); }
    to { opacity: 1; transform: translateY(0); }
}

/* "Pop" verde en el total cuando se aplica el descuento */
@keyframes moneyPop {
    0% { transform: scale(1); }
    35% { transform: scale(1.13); color: var(--green-700); }
    100% { transform: scale(1); }
}

.money-pop {
    display: inline-block;
    animation: moneyPop 0.55s var(--ease);
}

.total-row.main {
    font-size: 19px;
    font-weight: 600;
    color: var(--text);
    padding-top: 12px;
    border-top: 1px solid var(--border);
    margin-top: 12px;
    margin-bottom: 0;
    letter-spacing: -0.02em;
}

.delivery-info {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    color: var(--green-700);
    font-weight: 600;
    font-size: 12px;
    background: var(--green-050);
    padding: 4px 10px;
    border-radius: 100px;
    letter-spacing: 0.2px;
}

/* ============================================
   RESUMEN DEL PEDIDO (colapsable, estilo Shopify)
   ============================================ */
/* Banda full-bleed pegada a la línea del header (sin tarjeta redondeada).
   Los márgenes negativos igualan el padding de .modal-content. */
.order-summary {
    margin: -22px -20px 18px;
    border-bottom: 1px solid var(--border-2);
    background: var(--bg-2);
}

.order-summary-toggle {
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 15px 20px;
    background: transparent;
    border: none;
    cursor: pointer;
    font-family: var(--font);
    text-align: left;
}

.order-summary-toggle-left {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 15px;
    font-weight: 500;
    color: var(--green-700);
}

.order-summary-chevron {
    width: 15px;
    height: 15px;
    display: block;
    transition: transform var(--dur) var(--ease);
}

.order-summary-toggle.is-open .order-summary-chevron {
    transform: rotate(180deg);
}

.order-summary-toggle-total {
    font-size: 16px;
    font-weight: 700;
    color: var(--text);
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.order-summary-body {
    padding: 0 20px 16px;
    border-top: 1px solid var(--border-2);
    animation: orderSummaryExpand 0.22s var(--ease);
}

@keyframes orderSummaryExpand {
    from { opacity: 0; }
    to { opacity: 1; }
}

.order-summary-line {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 14px 0;
}

.order-summary-thumb {
    position: relative;
    flex-shrink: 0;
}

.order-summary-thumb img {
    width: 52px;
    height: 52px;
    object-fit: cover;
    border-radius: 10px;
    border: 1px solid var(--border-2);
    background: #fff;
    display: block;
}

.order-summary-qty {
    position: absolute;
    top: -7px;
    right: -7px;
    min-width: 20px;
    height: 20px;
    padding: 0 5px;
    border-radius: 100px;
    background: var(--text-2);
    color: #fff;
    font-size: 11px;
    font-weight: 600;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 2px solid var(--bg-2);
    font-variant-numeric: tabular-nums;
}

.order-summary-info {
    flex: 1;
    min-width: 0;
}

.order-summary-title {
    font-size: 14px;
    font-weight: 500;
    color: var(--text);
    line-height: 1.35;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.order-summary-price {
    font-size: 14px;
    font-weight: 600;
    color: var(--text);
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

.order-summary-totals {
    border-top: 1px solid var(--border-2);
    padding-top: 14px;
    display: flex;
    flex-direction: column;
    gap: 9px;
}

.order-summary-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 14px;
    color: var(--text-2);
}

.order-summary-row span:last-child {
    font-variant-numeric: tabular-nums;
    color: var(--text);
}

.order-summary-row#orderSummaryDiscountRow {
    animation: discountRowIn 0.45s var(--ease);
}

.order-summary-row#orderSummaryDiscountRow span:last-child {
    color: var(--green-700);
    font-weight: 600;
}

.order-summary-row-total {
    margin-top: 4px;
    padding-top: 12px;
    border-top: 1px solid var(--border-2);
    font-size: 18px;
    font-weight: 700;
    color: var(--text);
    letter-spacing: -0.01em;
}

.order-summary-row-total span:last-child {
    color: var(--text);
}

/* ============================================
   FORMULARIO
   ============================================ */
.form-section {
    margin-bottom: 16px;
}

.form-section-title {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    font-weight: 600;
    color: var(--text-3);
    margin-bottom: 12px;
    text-transform: uppercase;
    letter-spacing: 0.6px;
}

.form-section-title svg {
    width: 14px;
    height: 14px;
    color: var(--text-3);
}

.modal-overlay .form-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
}

.modal-overlay .form-group {
    margin-bottom: 12px;
}

.modal-overlay .form-group label {
    display: block !important;
    margin-bottom: 6px !important;
    font-size: 13px !important;
    font-weight: 500 !important;
    color: var(--text-2) !important;
    letter-spacing: -0.01em;
}


.modal-overlay .form-group input,
.modal-overlay .form-group select {
    width: 100% !important;
    padding: 11px 14px !important;
    border: 1px solid var(--border) !important;
    border-radius: var(--radius-sm) !important;
    font-size: 16px !important;
    color: var(--text) !important;
    background: var(--bg) !important;
    transition: border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease);
    line-height: 1.4 !important;
    height: auto !important;
    min-height: 0 !important;
    max-width: 100% !important;
    margin: 0 !important;
    box-shadow: none !important;
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
}

.modal-overlay .form-group input::placeholder {
    color: var(--text-3) !important;
}

.modal-overlay .form-group select {
    background-color: var(--bg) !important;
    appearance: none !important;
    -webkit-appearance: none !important;
    -moz-appearance: none !important;
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%2386868b' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e") !important;
    background-position: right 12px center !important;
    background-repeat: no-repeat !important;
    background-size: 16px !important;
    padding-right: 40px !important;
}

.modal-overlay .form-group input:focus,
.modal-overlay .form-group select:focus {
    outline: none !important;
    border-color: var(--green) !important;
    background: var(--bg) !important;
    box-shadow: 0 0 0 4px var(--green-ring) !important;
}

.modal-overlay .form-group input.error,
.modal-overlay .form-group select.error {
    border-color: var(--red) !important;
    background: var(--bg) !important;
    box-shadow: 0 0 0 4px var(--red-ring) !important;
}

.modal-overlay .form-group input[readonly] {
    background: var(--bg-2) !important;
    color: var(--text-2) !important;
}

/* Microcopy bajo los campos: para qué pedimos el dato */
.field-hint {
    font-size: 12px;
    color: var(--text-3);
    margin-top: 6px !important;
    line-height: 1.35;
}

/* ============================================
   AUTOCOMPLETAR CORREO
   ============================================ */
.email-autocomplete {
    position: relative;
}

.email-suggestions {
    display: none;
    position: absolute;
    top: calc(100% + 6px);
    left: 0;
    right: 0;
    z-index: 40;
    margin: 0;
    padding: 6px;
    list-style: none;
    background: var(--bg);
    border: 1px solid var(--border-2);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-modal);
    max-height: 232px;
    overflow-y: auto;
    animation: emailListFade 0.18s var(--ease);
}

.email-suggestions.show {
    display: block;
}

@keyframes emailListFade {
    from { opacity: 0; transform: translateY(-6px); }
    to { opacity: 1; transform: translateY(0); }
}

.email-suggestion-item {
    display: flex;
    align-items: center;
    padding: 10px 12px;
    border-radius: var(--radius-xs);
    font-size: 15px;
    cursor: pointer;
    transition: background 0.12s ease;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.email-suggestion-item:hover,
.email-suggestion-item.active {
    background: var(--green-050);
}

.email-suggestion-local { color: var(--text-2); }
.email-suggestion-typed { color: var(--text); font-weight: 500; }
.email-suggestion-completion { color: var(--green-700); font-weight: 600; }

/* ============================================
   FLUJO POR PASOS
   ============================================ */
.form-step {
    animation: stepFadeIn 0.3s var(--ease);
    scroll-margin-top: 16px;
}

@keyframes stepFadeIn {
    from { opacity: 0; transform: translateY(6px); }
    to { opacity: 1; transform: translateY(0); }
}

.step-indicator {
    margin-bottom: 14px;
}

.step-progress {
    display: flex;
    gap: 6px;
    margin-bottom: 14px;
}

.step-progress-seg {
    flex: 1;
    height: 4px;
    border-radius: 100px;
    background: var(--border-2);
    transition: background var(--dur) var(--ease);
}

.step-progress-seg.is-active {
    background: var(--green);
}

.step-eyebrow {
    font-size: 11px;
    font-weight: 600;
    color: var(--text-3);
    text-transform: uppercase;
    letter-spacing: 0.7px;
    margin-bottom: 3px;
}

.step-title {
    font-size: 20px;
    font-weight: 600;
    color: var(--text);
    letter-spacing: -0.022em;
    line-height: 1.2;
}

.step-subtitle {
    margin-top: 4px;
    font-size: 13px;
    font-weight: 400;
    color: var(--text-3);
}

/* Botón Continuar */
.btn-step-continue {
    width: 100%;
    padding: 15px 20px;
    border: none;
    border-radius: var(--radius-md);
    font-size: 16px;
    font-weight: 600;
    cursor: pointer;
    transition: background var(--dur) var(--ease), transform 0.12s var(--ease), box-shadow var(--dur) var(--ease);
    text-transform: none;
    letter-spacing: -0.01em;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-height: 52px;
    color: #fff;
    background: var(--green);
    box-shadow: 0 1px 2px color-mix(in srgb, var(--green) 25%, transparent);
}

.btn-step-continue:hover,
.btn-step-continue:focus {
    background: var(--green-700);
    box-shadow: 0 8px 22px -8px color-mix(in srgb, var(--green) 50%, transparent);
    outline: none;
}

.btn-step-continue:active {
    transform: scale(0.985);
}

.btn-step-continue svg {
    width: 18px;
    height: 18px;
    flex-shrink: 0;
    display: block;
}

/* Botón Volver */
.btn-step-back {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    margin-bottom: 14px;
    padding: 7px 12px 7px 8px;
    border: none;
    background: transparent;
    color: var(--text-2);
    font-size: 14px;
    font-weight: 500;
    cursor: pointer;
    border-radius: 100px;
    transition: color var(--dur) var(--ease), background var(--dur) var(--ease);
}

.btn-step-back:hover {
    color: var(--text);
    background: var(--bg-2);
}

.btn-step-back svg {
    width: 16px;
    height: 16px;
    flex-shrink: 0;
    display: block;
}

/* ---- PANTALLA UPSELL ---- */
.upsell-step {
    text-align: center;
}

.upsell-step-eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.7px;
    color: var(--green-700);
    margin-bottom: 6px;
}

.upsell-step-eyebrow svg {
    width: 14px;
    height: 14px;
    display: block;
}

.upsell-step-headline {
    font-size: 19px;
    font-weight: 600;
    color: var(--text);
    letter-spacing: -0.022em;
    line-height: 1.25;
    margin-bottom: 18px;
}

.upsell-step-card {
    text-align: left;
    border: 1px solid var(--border);
    background: var(--bg);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-1);
    margin-bottom: 18px;
    overflow: hidden;
}

.upsell-card-main {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 14px;
}

.upsell-body {
    flex: 1;
    min-width: 0;
}

/* Barra de precio full-width al pie de la tarjeta */
.upsell-card-foot {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 11px 14px;
    border-top: 1px solid var(--border-2);
    background: var(--green-050);
}

.upsell-foot-note {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    font-weight: 500;
    color: var(--text-2);
}

.upsell-foot-note svg {
    width: 14px;
    height: 14px;
    flex-shrink: 0;
    display: block;
    color: var(--green-700);
}

.upsell-price-wrap {
    display: inline-flex;
    align-items: baseline;
    gap: 8px;
}

.upsell-price-compare {
    font-size: 14px;
    color: var(--text-3);
    text-decoration: line-through;
    font-variant-numeric: tabular-nums;
}

.upsell-price-tag {
    font-size: 17px;
    font-weight: 700;
    color: var(--green-700);
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

/* Miniatura con sticker de ahorro */
.upsell-thumb {
    position: relative;
    flex-shrink: 0;
}

.upsell-save-badge {
    position: absolute;
    top: -8px;
    left: -8px;
    background: var(--green);
    color: #fff;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.2px;
    padding: 3px 8px;
    border-radius: 100px;
    box-shadow: 0 2px 6px color-mix(in srgb, var(--green) 35%, transparent);
    font-variant-numeric: tabular-nums;
}

.upsell-image {
    width: 48px;
    height: 48px;
    object-fit: cover;
    border-radius: 10px;
    box-shadow: var(--shadow-1);
}

.upsell-text {
    flex: 1;
    font-size: 14px;
    font-weight: 500;
    color: var(--text);
    line-height: 1.45;
}

.upsell-step .upsell-image {
    width: 86px;
    height: 86px;
    border-radius: 12px;
    flex-shrink: 0;
}

.btn-upsell-accept {
    width: 100%;
    padding: 15px 20px;
    border: none;
    border-radius: var(--radius-md);
    font-size: 16px;
    font-weight: 600;
    cursor: pointer;
    transition: background var(--dur) var(--ease), transform 0.12s var(--ease), box-shadow var(--dur) var(--ease);
    letter-spacing: -0.01em;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-height: 52px;
    color: #fff;
    background: var(--green);
    box-shadow: 0 1px 2px color-mix(in srgb, var(--green) 25%, transparent);
}

.btn-upsell-accept:hover,
.btn-upsell-accept:focus {
    background: var(--green-700);
    box-shadow: 0 8px 22px -8px color-mix(in srgb, var(--green) 50%, transparent);
    outline: none;
}

.btn-upsell-accept:active {
    transform: scale(0.985);
}

.btn-upsell-accept svg {
    width: 18px;
    height: 18px;
    flex-shrink: 0;
    display: block;
}

.btn-upsell-price {
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}

.btn-upsell-decline {
    width: 100%;
    margin-top: 12px;
    padding: 12px;
    border: none;
    background: transparent;
    color: var(--text-3);
    font-size: 14px;
    font-weight: 500;
    cursor: pointer;
    transition: color var(--dur) var(--ease);
}

.btn-upsell-decline:hover {
    color: var(--text-2);
}

/* ============================================
   ENVÍO PRIORITARIO
   ============================================ */
.priority-shipping {
    position: relative;
    background: var(--bg);
    border: 1px solid var(--border);
    border-radius: var(--radius-md);
    padding: 15px 16px;
    margin-bottom: 20px;
    display: none;
    transition: border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease), background var(--dur) var(--ease);
    cursor: pointer;
    overflow: hidden;
}

/* Rayo decorativo animado (SVG), pegado al borde derecho.
   Reposado: contorno gris con parpadeo eléctrico ocasional muy sutil.
   Seleccionado: el trazo se "electrifica" (se dibuja), suelta chispas
   una vez y queda latiendo suave en verde. */
.priority-bolt {
    position: absolute;
    right: 10px;
    top: 50%;
    width: 60px;
    height: 60px;
    transform: translateY(-50%) rotate(10deg);
    pointer-events: none;
    z-index: 0;
    color: var(--border);
    opacity: 0.55;
    overflow: visible;
    transition: color var(--dur) var(--ease);
    animation: boltIdleFlicker 7s linear infinite;
}

/* Parpadeo idle: un doble "flicker" breve cada 7s, apenas perceptible */
@keyframes boltIdleFlicker {
    0%, 90%, 100% { opacity: 0.55; }
    92%           { opacity: 0.75; }
    94%           { opacity: 0.45; }
    96%           { opacity: 0.68; }
}

.priority-bolt .bolt-shape {
    fill: currentColor;
    fill-opacity: 0.12;
    stroke: currentColor;
    stroke-width: 1.1;
    stroke-linejoin: round;
    stroke-dasharray: 100;
    stroke-dashoffset: 0;
}

.priority-bolt .bolt-sparks line {
    stroke: currentColor;
    stroke-width: 1.6;
    stroke-linecap: round;
    opacity: 0;
}

.priority-shipping.selected .priority-bolt {
    color: var(--green);
    opacity: 0.28;
    animation: boltSettle 2.6s ease-in-out 0.65s infinite;
}

/* El contorno se traza como descarga y luego se rellena */
.priority-shipping.selected .bolt-shape {
    animation: boltTrace 0.55s var(--ease);
}

@keyframes boltTrace {
    0%   { stroke-dashoffset: 100; fill-opacity: 0; }
    70%  { stroke-dashoffset: 0;   fill-opacity: 0; }
    100% { stroke-dashoffset: 0;   fill-opacity: 0.12; }
}

/* Chispas: un destello único y escalonado alrededor del rayo */
.priority-shipping.selected .bolt-sparks line {
    animation: sparkFlash 0.5s var(--ease) forwards;
}
.priority-shipping.selected .bolt-sparks line:nth-child(1) { animation-delay: 0.32s; }
.priority-shipping.selected .bolt-sparks line:nth-child(2) { animation-delay: 0.40s; }
.priority-shipping.selected .bolt-sparks line:nth-child(3) { animation-delay: 0.48s; }

@keyframes sparkFlash {
    0%   { opacity: 0; }
    35%  { opacity: 0.9; }
    100% { opacity: 0; }
}

/* Latido eléctrico continuo mientras está seleccionado */
@keyframes boltSettle {
    0%, 100% { opacity: 0.2;  transform: translateY(-50%) rotate(10deg) scale(1); }
    50%      { opacity: 0.3;  transform: translateY(-50%) rotate(9deg) scale(1.04); }
}

@media (prefers-reduced-motion: reduce) {
    .priority-bolt,
    .priority-shipping.selected .bolt-shape,
    .priority-shipping.selected .bolt-sparks line {
        animation: none !important;
    }
}

.priority-shipping.show {
    display: block;
    animation: fadeIn 0.3s var(--ease);
}

.priority-shipping:hover {
    border-color: #b9b9c0;
    box-shadow: var(--shadow-2);
}

.priority-shipping.selected {
    border-color: var(--green);
    background: var(--green-050);
    box-shadow: 0 0 0 3px var(--green-ring);
}

.priority-content {
    position: relative;
    z-index: 1;
    display: flex;
    align-items: center;
    gap: 13px;
}

.priority-info {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 3px;
}

.priority-label {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 7px;
    font-size: 15px;
    font-weight: 600;
    color: var(--text);
    letter-spacing: -0.01em;
    line-height: 1.3;
}

.priority-badge {
    display: inline-block;
    background: var(--amber-050);
    color: color-mix(in srgb, var(--amber) 70%, #000);
    font-size: 10px;
    font-weight: 600;
    letter-spacing: 0.4px;
    padding: 2px 7px;
    border-radius: 6px;
    text-transform: uppercase;
    vertical-align: middle;
}

.priority-shipping.selected .priority-badge {
    background: #fff;
    color: var(--green-700);
}

/* Comparación de tiempos: mismo patrón que offer-original-price */
.priority-benefit {
    display: flex;
    align-items: center;
    gap: 7px;
    flex-wrap: wrap;
}

.priority-time-old {
    font-size: 13px;
    color: var(--text-3);
    text-decoration: line-through;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.priority-benefit .priority-arrow {
    width: 12px;
    height: 12px;
    color: var(--text-3);
    flex-shrink: 0;
}

.priority-time-new {
    font-size: 13px;
    font-weight: 600;
    color: var(--green-700);
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.priority-zone {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 12px;
    font-weight: 500;
    color: var(--green-700);
    line-height: 1.3;
}

.priority-zone svg {
    width: 12px;
    height: 12px;
    flex-shrink: 0;
}

.priority-price {
    align-self: center;
    flex-shrink: 0;
    font-size: 16px;
    font-weight: 700;
    color: var(--text);
    letter-spacing: -0.02em;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
    transition: color var(--dur) var(--ease);
}

.priority-shipping.selected .priority-price {
    color: var(--green-700);
}

/* Checkbox custom (priority) */
.priority-checkbox {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    width: 22px;
    height: 22px;
    border: 1.5px solid var(--border);
    border-radius: 50%;
    cursor: pointer;
    position: relative;
    transition: background var(--dur) var(--ease), border-color var(--dur) var(--ease);
    flex-shrink: 0;
    background: var(--bg);
}

.priority-checkbox:checked {
    background: var(--green);
    border-color: var(--green);
}

.priority-checkbox:checked::after {
    content: '';
    position: absolute;
    top: 3px;
    left: 7px;
    width: 5px;
    height: 10px;
    border: solid #fff;
    border-width: 0 2px 2px 0;
    transform: rotate(45deg);
}

/* ============================================
   BOTONES DE PAGO
   ============================================ */
.payment-buttons {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.payment-security {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 18px;
    margin-bottom: 10px;
    padding: 6px;
}

.payment-security-item {
    display: flex;
    align-items: center;
    gap: 5px;
    font-size: 11px;
    color: var(--text-3);
    font-weight: 500;
}

.payment-security-item svg {
    width: 14px;
    height: 14px;
    color: var(--text-3);
}

.modal-overlay .btn-payment {
    width: 100%;
    padding: 15px 48px;
    border: none;
    border-radius: var(--radius-md);
    font-size: 15px;
    font-weight: 600;
    cursor: pointer;
    transition: background var(--dur) var(--ease), transform 0.12s var(--ease), box-shadow var(--dur) var(--ease);
    text-transform: none;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    align-content: center;
    justify-content: center;
    row-gap: 4px;
    text-align: center;
    line-height: 1.25;
    min-height: 54px;
    letter-spacing: -0.01em;
    position: relative;
    overflow: hidden;
}

.btn-pay-label {
    font-weight: 600;
}

.btn-pay-amount {
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    margin-left: 8px;
}

/* Icono anclado a la izquierda; el label+monto se centran en el ancho total */
.btn-cod-icon,
.btn-card-icon {
    width: 20px;
    height: 20px;
    flex-shrink: 0;
    display: block;
    position: absolute;
    left: 18px;
    top: 50%;
    transform: translateY(-50%);
}

.modal-overlay .btn-cod {
    background: var(--green) !important;
    color: #fff !important;
    box-shadow: 0 1px 2px color-mix(in srgb, var(--green) 25%, transparent);
}

.modal-overlay .btn-cod:hover,
.modal-overlay .btn-cod:focus {
    background: var(--green-700) !important;
    box-shadow: 0 10px 26px -10px color-mix(in srgb, var(--green) 55%, transparent) !important;
    color: #fff !important;
    border: none !important;
    outline: none !important;
}

.modal-overlay .btn-cod:active {
    transform: scale(0.985) !important;
}

.modal-overlay .btn-cod:disabled {
    background: var(--border) !important;
    color: #fff !important;
    cursor: not-allowed;
    transform: none;
    box-shadow: none;
}

.modal-overlay .btn-card {
    background: var(--blue) !important;
    color: #fff !important;
    box-shadow: 0 1px 2px color-mix(in srgb, var(--blue) 25%, transparent);
}

.modal-overlay .btn-card:hover,
.modal-overlay .btn-card:focus {
    background: var(--blue-700) !important;
    box-shadow: 0 10px 26px -10px color-mix(in srgb, var(--blue) 50%, transparent) !important;
    color: #fff !important;
    border: none !important;
    outline: none !important;
}

.modal-overlay .btn-card:active {
    transform: scale(0.985) !important;
}

.modal-overlay .btn-card:disabled {
    background: var(--border) !important;
    color: #fff !important;
    cursor: not-allowed;
    transform: none;
    box-shadow: none;
}

.modal-overlay .btn-card .discount {
    font-size: 18px;
}

/* ============================================
   GARANTÍA (footer)
   ============================================ */
.guarantee-section {
    padding: 18px 20px;
    border-top: 1px solid var(--border-2);
    background: var(--bg-2);
    border-radius: 0 0 var(--radius) var(--radius);
}

.guarantee-row {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 22px;
    flex-wrap: wrap;
}

.guarantee-item {
    display: flex;
    align-items: center;
    gap: 7px;
    font-size: 12px;
    color: var(--text-2);
    font-weight: 500;
}

.guarantee-item-icon {
    width: 32px;
    height: 32px;
    background: var(--bg);
    border: 1px solid var(--border-2);
    border-radius: 9px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.guarantee-item-icon svg {
    width: 16px;
    height: 16px;
}

/* ============================================
   LOADER
   ============================================ */
.loader-overlay {
    display: none;
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background: rgba(255, 255, 255, 0.94);
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
    z-index: 1000;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    border-radius: var(--radius);
}

.loader-overlay.show {
    display: flex;
}

.loader {
    width: 44px;
    height: 44px;
    position: relative;
}

.loader::before,
.loader::after {
    content: '';
    position: absolute;
    border-radius: 50%;
}

.loader::before {
    width: 44px;
    height: 44px;
    border: 3px solid var(--border-2);
    border-top-color: var(--green);
    border-right-color: var(--green);
    animation: loaderSpin 0.8s linear infinite;
    top: 0;
    left: 0;
}

.loader::after {
    width: 26px;
    height: 26px;
    border: 3px solid var(--border-2);
    border-bottom-color: var(--text-3);
    border-left-color: var(--text-3);
    animation: loaderSpin 0.6s linear infinite reverse;
    top: 9px;
    left: 9px;
}

@keyframes loaderSpin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

.loader-text {
    margin-top: 20px;
    font-size: 16px;
    font-weight: 600;
    color: var(--text);
    letter-spacing: -0.02em;
}

.loader-text::after {
    content: '';
    animation: loaderDots 1.5s steps(4, end) infinite;
}

@keyframes loaderDots {
    0% { content: ''; }
    25% { content: '.'; }
    50% { content: '..'; }
    75% { content: '...'; }
}

/* Botón de abrir modal (en la página de producto).
   :where() deja la especificidad en 0: si el tema/Bricks ya estiliza el botón,
   sus reglas ganan y aquí solo queda el estilo por defecto. */
:where(.open-modal-btn) {
    padding: 13px 26px;
    background: var(--cod-accent, var(--green));
    color: #fff;
    border: none;
    border-radius: 12px;
    font-size: 16px;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.28s cubic-bezier(0.22, 1, 0.36, 1), transform 0.12s ease, box-shadow 0.28s ease;
    box-shadow: 0 1px 2px color-mix(in srgb, var(--cod-accent, var(--green)) 25%, transparent);
    font-family: var(--cod-font, "Inter", -apple-system, BlinkMacSystemFont, "SF Pro Text", "Helvetica Neue", "Segoe UI", Roboto, Arial, sans-serif);
}

:where(.open-modal-btn):hover {
    background: var(--cod-accent-dark, var(--green-700));
    box-shadow: 0 10px 26px -10px color-mix(in srgb, var(--cod-accent, var(--green)) 55%, transparent);
}

:where(.open-modal-btn):active {
    transform: scale(0.985);
}

/* ============================================
   MODAL EXIT-INTENT (urgencia atenuada)
   ============================================ */
.discount-modal {
    display: none;
    position: fixed;
    inset: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.5);
    backdrop-filter: saturate(180%) blur(20px);
    -webkit-backdrop-filter: saturate(180%) blur(20px);
    z-index: 10001;
    align-items: center;
    justify-content: center;
    padding: 16px;
}

.discount-modal.active {
    display: flex;
    animation: exitOverlayIn 0.3s ease-out;
}

@keyframes exitOverlayIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

.discount-modal-content {
    background: var(--bg);
    border-radius: var(--radius);
    max-width: 400px;
    width: 100%;
    text-align: center;
    position: relative;
    overflow: hidden;
    font-family: var(--font);
    box-shadow: var(--shadow-modal);
    animation: exitModalIn 0.45s var(--ease);
}

@keyframes exitModalIn {
    from { opacity: 0; transform: scale(0.94) translateY(16px); }
    to { opacity: 1; transform: scale(1) translateY(0); }
}

.exit-body {
    padding: 28px 24px 24px;
}

.exit-headline {
    font-size: 22px;
    font-weight: 600;
    color: var(--text);
    line-height: 1.25;
    letter-spacing: -0.022em;
    margin-bottom: 6px;
}

.exit-subheadline {
    font-size: 15px;
    color: var(--text-2);
    margin-bottom: 22px;
    line-height: 1.4;
}

.exit-countdown-wrapper {
    margin-bottom: 22px;
}

.exit-countdown-label {
    font-size: 12px;
    color: var(--text-3);
    text-transform: uppercase;
    letter-spacing: 0.8px;
    font-weight: 600;
    margin-bottom: 10px;
}

.exit-countdown {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}

.exit-countdown-unit {
    display: flex;
    flex-direction: column;
    align-items: center;
}

.exit-countdown-number {
    background: var(--bg-2);
    color: var(--text);
    font-size: 28px;
    font-weight: 700;
    width: 60px;
    height: 60px;
    border: 1px solid var(--border-2);
    border-radius: var(--radius-sm);
    display: flex;
    align-items: center;
    justify-content: center;
    font-variant-numeric: tabular-nums;
    letter-spacing: -0.02em;
    box-shadow: var(--shadow-1);
}

.exit-countdown-unit-label {
    font-size: 10px;
    color: var(--text-3);
    text-transform: uppercase;
    margin-top: 6px;
    font-weight: 600;
    letter-spacing: 0.5px;
}

.exit-countdown-separator {
    font-size: 24px;
    font-weight: 600;
    color: var(--text-3);
    margin-bottom: 16px;
}

.exit-progress-bar {
    width: 100%;
    height: 5px;
    background: var(--border-2);
    border-radius: 100px;
    margin-bottom: 22px;
    overflow: hidden;
}

.exit-progress-fill {
    height: 100%;
    background: var(--green);
    border-radius: 100px;
    width: 100%;
    transition: width 1s linear;
}

.exit-discount-block {
    background: linear-gradient(160deg, color-mix(in srgb, var(--green) 5%, #fff) 0%, color-mix(in srgb, var(--green) 10%, #fff) 100%);
    border: 1px solid color-mix(in srgb, var(--green) 18%, transparent);
    border-radius: var(--radius);
    padding: 24px 20px;
    margin-bottom: 16px;
}

.exit-discount-amount {
    font-size: 44px;
    font-weight: 700;
    color: var(--green-700);
    line-height: 1;
    margin-bottom: 6px;
    letter-spacing: -0.04em;
}

.exit-discount-label {
    font-size: 14px;
    color: var(--text-2);
    font-weight: 500;
}

.exit-social-proof {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    margin-bottom: 20px;
    padding: 9px 12px;
    background: var(--bg-2);
    border-radius: var(--radius-xs);
}

.exit-social-dot {
    width: 8px;
    height: 8px;
    background: var(--green);
    border-radius: 50%;
    animation: exitSocialPulse 2.4s ease-in-out infinite;
}

@keyframes exitSocialPulse {
    0%, 100% { opacity: 1; transform: scale(1); }
    50% { opacity: 0.6; transform: scale(0.82); }
}

.exit-social-text {
    font-size: 13px;
    color: var(--text-2);
}

.exit-social-text strong {
    color: var(--text);
    font-weight: 600;
}

.exit-trust-row {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 18px;
    margin-bottom: 24px;
    font-size: 12px;
    color: var(--text-3);
}

.exit-trust-item {
    display: flex;
    align-items: center;
    gap: 5px;
}

.exit-trust-icon {
    display: inline-flex;
    align-items: center;
}

.exit-trust-icon svg {
    width: 15px;
    height: 15px;
    display: block;
    color: var(--green-700);
}

.discount-modal .btn-apply-discount {
    background: var(--green) !important;
    color: #fff !important;
    padding: 17px 24px;
    border: none;
    border-radius: var(--radius-md);
    font-size: 16px;
    font-weight: 600;
    cursor: pointer;
    width: 100%;
    display: block;
    text-align: center;
    line-height: 1.3;
    text-transform: none;
    letter-spacing: -0.01em;
    position: relative;
    overflow: hidden;
    transition: background var(--dur) var(--ease), transform 0.12s var(--ease), box-shadow var(--dur) var(--ease);
    box-shadow: 0 1px 2px color-mix(in srgb, var(--green) 25%, transparent);
}

.discount-modal .btn-apply-discount:hover,
.discount-modal .btn-apply-discount:focus {
    background: var(--green-700) !important;
    box-shadow: 0 12px 28px -10px color-mix(in srgb, var(--green) 55%, transparent) !important;
    color: #fff !important;
    border: none !important;
    outline: none !important;
}

.discount-modal .btn-apply-discount:active {
    transform: scale(0.985) !important;
}

.discount-modal .btn-skip-discount {
    background: none !important;
    border: none !important;
    color: var(--text-3) !important;
    padding: 13px 16px !important;
    font-size: 13px !important;
    cursor: pointer;
    transition: color 0.2s;
    text-decoration: none !important;
    display: block;
    width: 100%;
    text-align: center;
    margin-top: 8px;
    box-shadow: none !important;
}

.discount-modal .btn-skip-discount:hover,
.discount-modal .btn-skip-discount:focus,
.discount-modal .btn-skip-discount:active {
    color: var(--text-2) !important;
    background: none !important;
    border: none !important;
    box-shadow: none !important;
    outline: none !important;
}

@media (max-width: 380px) {
    .exit-body { padding: 22px 18px; }
    .exit-headline { font-size: 20px; }
    .exit-countdown-number { font-size: 26px; width: 56px; height: 58px; }
    .exit-discount-amount { font-size: 46px; }
    .discount-modal .btn-apply-discount { font-size: 15px; padding: 15px 20px; }
}

/* ============================================
   MODAL SIN COBERTURA
   ============================================ */
.no-coverage-modal {
    display: none;
    position: fixed;
    inset: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.5);
    z-index: 10002;
    align-items: center;
    justify-content: center;
    padding: 16px;
    backdrop-filter: saturate(180%) blur(20px);
    -webkit-backdrop-filter: saturate(180%) blur(20px);
}

.no-coverage-modal.active {
    display: flex;
    animation: noCoverageOverlayIn 0.3s ease-out;
}

@keyframes noCoverageOverlayIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

.no-coverage-content {
    background: var(--bg);
    border-radius: var(--radius);
    max-width: 400px;
    width: 100%;
    text-align: center;
    position: relative;
    overflow: hidden;
    font-family: var(--font);
    box-shadow: var(--shadow-modal);
    animation: noCoverageModalIn 0.45s var(--ease);
}

@keyframes noCoverageModalIn {
    from { opacity: 0; transform: scale(0.94) translateY(16px); }
    to { opacity: 1; transform: scale(1) translateY(0); }
}

.no-coverage-body {
    padding: 28px 24px 24px;
}

.no-coverage-icon {
    width: 64px;
    height: 64px;
    background: var(--amber-050);
    border: 1px solid color-mix(in srgb, var(--amber) 30%, #fff);
    border-radius: 18px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 0 auto 20px;
}

.no-coverage-icon svg {
    width: 32px;
    height: 32px;
}

.no-coverage-title {
    font-size: 22px;
    font-weight: 600;
    color: var(--text);
    line-height: 1.25;
    margin-bottom: 8px;
    letter-spacing: -0.022em;
}

.no-coverage-text {
    font-size: 15px;
    color: var(--text-2);
    margin-bottom: 20px;
    line-height: 1.5;
}

.no-coverage-text strong {
    color: var(--text);
    font-weight: 600;
}

.no-coverage-benefit {
    background: var(--green-050);
    border: 1px solid color-mix(in srgb, var(--green) 22%, transparent);
    border-radius: var(--radius-md);
    padding: 18px 20px;
    margin-bottom: 20px;
}

.no-coverage-benefit-amount {
    font-size: 36px;
    font-weight: 700;
    color: var(--green-700);
    line-height: 1;
    margin-bottom: 4px;
    letter-spacing: -0.03em;
}

.no-coverage-benefit-label {
    font-size: 14px;
    color: var(--text-2);
    font-weight: 500;
}

.no-coverage-trust {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 18px;
    margin-bottom: 24px;
    font-size: 12px;
    color: var(--text-3);
}

.no-coverage-trust-item {
    display: flex;
    align-items: center;
    gap: 5px;
}

.no-coverage-trust-item svg {
    width: 14px;
    height: 14px;
    color: var(--text-3);
    flex-shrink: 0;
}

.no-coverage-modal .btn-pay-card-only svg {
    width: 18px;
    height: 18px;
    flex-shrink: 0;
}

.no-coverage-modal .btn-pay-card-only {
    background: var(--blue) !important;
    color: #fff !important;
    padding: 17px 24px;
    border: none;
    border-radius: var(--radius-md);
    font-size: 16px;
    font-weight: 600;
    cursor: pointer;
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    text-transform: none;
    letter-spacing: -0.01em;
    position: relative;
    overflow: hidden;
    transition: background var(--dur) var(--ease), transform 0.12s var(--ease), box-shadow var(--dur) var(--ease);
    box-shadow: 0 1px 2px color-mix(in srgb, var(--blue) 25%, transparent);
}

.no-coverage-modal .btn-pay-card-only:hover,
.no-coverage-modal .btn-pay-card-only:focus {
    background: var(--blue-700) !important;
    box-shadow: 0 12px 28px -10px color-mix(in srgb, var(--blue) 50%, transparent) !important;
    color: #fff !important;
    border: none !important;
    outline: none !important;
}

.no-coverage-modal .btn-pay-card-only:active {
    transform: scale(0.985) !important;
}

.no-coverage-modal .btn-no-coverage-close {
    background: none !important;
    border: none !important;
    color: var(--text-3) !important;
    padding: 13px 16px !important;
    font-size: 13px !important;
    cursor: pointer;
    transition: color 0.2s;
    text-decoration: none !important;
    display: block;
    width: 100%;
    text-align: center;
    margin-top: 8px;
    box-shadow: none !important;
}

.no-coverage-modal .btn-no-coverage-close:hover,
.no-coverage-modal .btn-no-coverage-close:focus,
.no-coverage-modal .btn-no-coverage-close:active {
    color: var(--text-2) !important;
    background: none !important;
    border: none !important;
    box-shadow: none !important;
    outline: none !important;
}

@media (max-width: 380px) {
    .no-coverage-body { padding: 22px 18px; }
    .no-coverage-title { font-size: 20px; }
    .no-coverage-benefit-amount { font-size: 30px; }
    .no-coverage-modal .btn-pay-card-only { font-size: 15px; padding: 15px 20px; }
}

/* ============================================
   RESPONSIVO — MODAL PRINCIPAL
   ============================================ */
@media (max-width: 480px) {
    .modal-overlay {
        padding-top: 2%;
        padding-bottom: 2%;
    }

    .modal-container {
        height: auto;
        max-width: 96%;
        border-radius: 18px;
        margin: 10px auto;
        overflow: visible;
    }

    .modal-header {
        border-radius: 18px 18px 0 0;
        padding: 16px 16px 14px;
    }

    .modal-title { font-size: 17px; }

    .modal-content { padding: 16px; }

    .modal-overlay .form-row {
        grid-template-columns: 1fr;
        gap: 0;
    }

    .offer-image { width: 50px; height: 50px; }
    .offer-title { font-size: 14px; }
    .offer-price { font-size: 19px; }

    .modal-overlay .btn-payment {
        font-size: 13px;
        padding: 13px 44px;
        min-height: 50px;
    }

    .btn-cod-icon,
    .btn-card-icon { width: 18px; height: 18px; }

    .payment-security { gap: 12px; }

    .guarantee-row { gap: 14px; }
    .guarantee-item { font-size: 11px; }
    .guarantee-section { border-radius: 0 0 18px 18px; }

    .discount-modal-content,
    .no-coverage-content { width: 95%; }
}

/* Compactar en móvil (iPhone, etc.) */
@media (max-width: 480px) {
    .modal-container { margin: 8px auto; }

    .modal-header { padding: 13px 14px 11px; gap: 10px; }
    .modal-header-icon { width: 36px; height: 36px; border-radius: 10px; }
    .modal-header-icon svg { width: 19px; height: 19px; }
    .modal-header-info { gap: 3px; }
    .modal-title { font-size: 16px; }
    .modal-social-proof { display: none; }

    .modal-content { padding: 14px; }

    .order-summary { margin: -14px -14px 16px; }
    .order-summary-toggle { padding: 14px; }
    .order-summary-body { padding: 0 14px 14px; }

    .offers-section { gap: 8px; margin-bottom: 14px; }
    .offer-item { padding: 11px 12px; }
    .offer-content { gap: 10px; }
    .offer-image { width: 46px; height: 46px; border-radius: 10px; }
    .offer-title { font-size: 13px; margin-bottom: 2px; line-height: 1.25; }
    .offer-price { font-size: 17px; }
    .offer-original-price { font-size: 12px; }

    .totals-section { padding: 12px 14px; margin-bottom: 14px; }
    .total-row { font-size: 14px; margin-bottom: 8px; }
    .total-row.main { font-size: 17px; padding-top: 10px; margin-top: 10px; }

    .step-indicator { margin-bottom: 12px; }
    .step-progress { margin-bottom: 10px; }
    .step-title { font-size: 18px; }
    .step-subtitle { font-size: 12px; }

    .modal-overlay .form-group { margin-bottom: 10px; }
    .modal-overlay .form-group input,
    .modal-overlay .form-group select { padding: 11px 12px !important; }

    .priority-shipping { padding: 12px 14px; margin-bottom: 16px; }

    .modal-overlay .btn-payment { font-size: 13px; min-height: 50px; padding: 13px 44px; }
    .btn-step-continue,
    .btn-upsell-accept { min-height: 50px; }

    .guarantee-section { padding: 13px 14px; }
    .guarantee-row { gap: 12px; }
}

@media (max-width: 360px) {
    .modal-content { padding: 14px; }

    .modal-header-badge { font-size: 10px; padding: 3px 7px; }

    .modal-social-proof { display: none; }

    .modal-overlay .btn-payment {
        font-size: 13px;
        padding: 12px 40px;
        letter-spacing: -0.01em;
    }

    .btn-cod-icon,
    .btn-card-icon { width: 16px; height: 16px; }

    .payment-security { gap: 8px; }
    .payment-security-item { font-size: 10px; }
    .payment-security-item svg { width: 12px; height: 12px; }

    .guarantee-row { gap: 8px; }
    .guarantee-item { font-size: 10px; gap: 5px; }
    .guarantee-item-icon { width: 28px; height: 28px; border-radius: 8px; }
    .guarantee-item-icon svg { width: 14px; height: 14px; }
}

/* ============================================================
   AISLAMIENTO DEL TEMA
   El modal se inserta en temas que estilizan <button>, <a>, etc.
   (Hello Elementor, Astra...). Usamos la especificidad de los IDs
   raíz (#checkoutModal / #discountModal / #noCoverageModal) + !important
   para que el modal SIEMPRE mande, sin pelear con la cascada del tema.
   ============================================================ */

/* Neutraliza la decoración que el tema inyecta en los botones del modal */
#checkoutModal button,
#discountModal button,
#noCoverageModal button {
    -webkit-appearance: none !important;
    appearance: none !important;
    font-family: var(--font) !important;
    letter-spacing: normal !important;
    text-transform: none !important;
    text-decoration: none !important;
    text-shadow: none !important;
    cursor: pointer;
}

/* Botón Volver: el theme puede forzar display:block/width:100% en buttons */
#checkoutModal .btn-step-back {
    display: inline-flex !important;
    width: auto !important;
    align-items: center !important;
    gap: 5px !important;
    margin: 0 0 14px !important;
    padding: 7px 12px 7px 8px !important;
    border: none !important;
    background: transparent !important;
    color: var(--text-2) !important;
    font-size: 14px !important;
    font-weight: 500 !important;
    line-height: 1.2 !important;
    border-radius: 100px !important;
    box-shadow: none !important;
}
#checkoutModal .btn-step-back:hover {
    color: var(--text) !important;
    background: var(--bg-2) !important;
}
#checkoutModal .btn-step-back svg {
    width: 16px !important;
    height: 16px !important;
    flex-shrink: 0 !important;
    display: block !important;
}

/* CTAs verdes: Continuar / Agregar y finalizar */
#checkoutModal .btn-step-continue,
#checkoutModal .btn-upsell-accept {
    width: 100% !important;
    min-height: 52px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 8px !important;
    border: none !important;
    border-radius: var(--radius-md) !important;
    background: var(--green) !important;
    color: #fff !important;
    box-shadow: 0 1px 2px color-mix(in srgb, var(--green) 25%, transparent) !important;
}

#checkoutModal .btn-step-continue:hover,
#checkoutModal .btn-step-continue:focus,
#checkoutModal .btn-upsell-accept:hover,
#checkoutModal .btn-upsell-accept:focus {
    background: var(--green-700) !important;
    color: #fff !important;
    outline: none !important;
}

/* Botones de pago (color por .btn-cod / .btn-card) */
#checkoutModal .btn-payment {
    width: 100% !important;
    border: none !important;
    border-radius: var(--radius-md) !important;
}

/* Botones de texto: Volver / No me interesa / toggle del resumen */
#checkoutModal .btn-step-back,
#checkoutModal .btn-upsell-decline,
#checkoutModal .order-summary-toggle {
    border: none !important;
    background: transparent !important;
    box-shadow: none !important;
}

#checkoutModal .btn-step-back { color: var(--text-2) !important; }
#checkoutModal .btn-upsell-decline { width: 100% !important; color: var(--text-3) !important; }
#checkoutModal .order-summary-toggle { width: 100% !important; display: flex !important; }

#checkoutModal .btn-step-back:hover,
#checkoutModal .btn-step-back:focus { color: var(--text) !important; background: var(--bg-2) !important; }
#checkoutModal .btn-upsell-decline:hover,
#checkoutModal .btn-upsell-decline:focus { color: var(--text-2) !important; }
#checkoutModal .order-summary-toggle .order-summary-toggle-left { color: var(--green-700) !important; }
#checkoutModal .order-summary-toggle .order-summary-toggle-total { color: var(--text) !important; }

/* Cerrar (X) */
#checkoutModal .modal-close {
    border: none !important;
    background: var(--bg-2) !important;
    color: var(--text-3) !important;
}
#checkoutModal .modal-close:hover,
#checkoutModal .modal-close:focus { background: var(--border-2) !important; color: var(--text) !important; }

/* Campos de formulario: borde/fondo/tipografía propios (no del tema) */
#checkoutModal .form-group input,
#checkoutModal .form-group select,
#checkoutModal .variation-select-offer {
    width: 100% !important;
    border: 1px solid var(--border) !important;
    background: var(--bg) !important;
    color: var(--text) !important;
    box-shadow: none !important;
    font-family: var(--font) !important;
}
#checkoutModal .form-group input:focus,
#checkoutModal .form-group select:focus,
#checkoutModal .variation-select-offer:focus {
    border-color: var(--green) !important;
    box-shadow: 0 0 0 4px var(--green-ring) !important;
    outline: none !important;
}
#checkoutModal .form-group input.error,
#checkoutModal .form-group select.error,
#checkoutModal .variation-select-offer.error {
    border-color: var(--red) !important;
    box-shadow: 0 0 0 4px var(--red-ring) !important;
}

/* CTAs de los sub-modales (exit-intent / sin cobertura) */
#discountModal .btn-apply-discount,
#noCoverageModal .btn-pay-card-only {
    width: 100% !important;
    border: none !important;
    color: #fff !important;
}
#discountModal .btn-skip-discount,
#noCoverageModal .btn-no-coverage-close {
    width: 100% !important;
    border: none !important;
    background: none !important;
    box-shadow: none !important;
}

/* ===== Pago con tarjeta en el modal (Mercado Pago Secure Fields) ===== */
#checkoutModal .card-step-headline {
    display: flex !important;
    align-items: center !important;
    gap: 8px !important;
    font-size: 18px !important;
    font-weight: 700 !important;
    color: var(--text) !important;
    margin: 0 0 4px !important;
}
#checkoutModal .card-step-headline svg {
    width: 20px !important;
    height: 20px !important;
    color: var(--green) !important;
}
#checkoutModal .card-step-note {
    font-size: 13px !important;
    color: var(--text-3) !important;
    margin: 0 0 16px !important;
}
/* Contenedores de los iframes de MP: mismo look que los inputs propios */
#checkoutModal .mp-field {
    width: 100% !important;
    height: 46px !important;
    padding: 0 14px !important;
    border: 1px solid var(--border) !important;
    border-radius: var(--radius-sm) !important;
    background: var(--bg) !important;
    box-sizing: border-box !important;
}
#checkoutModal .mp-field iframe {
    height: 100% !important;
    width: 100% !important;
}
#checkoutModal .mp-card-error {
    margin: 0 0 12px !important;
    padding: 10px 12px !important;
    border: 1px solid var(--red) !important;
    border-radius: var(--radius-sm) !important;
    background: var(--red-ring) !important;
    color: var(--red) !important;
    font-size: 13px !important;
    font-weight: 600 !important;
}
#checkoutModal #btnMpPay {
    width: 100% !important;
    border: none !important;
    color: #fff !important;
}
#checkoutModal #btnMpPay[disabled] {
    opacity: 0.65 !important;
    cursor: not-allowed !important;
}
#checkoutModal .mp-secure-note {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 6px !important;
    margin-top: 12px !important;
    font-size: 12px !important;
    color: var(--text-3) !important;
}
#checkoutModal .mp-secure-note svg {
    width: 14px !important;
    height: 14px !important;
    flex-shrink: 0 !important;
}
#checkoutModal .mp-fallback-link {
    display: block !important;
    text-align: center !important;
    margin-top: 10px !important;
    font-size: 13px !important;
    color: var(--text-3) !important;
    text-decoration: underline !important;
}
#checkoutModal .mp-fallback-link:hover {
    color: var(--text) !important;
}

/* ===== Acordeón de métodos de pago (v2.18.0) =====
   Mismo lenguaje que .offer-item / .priority-shipping: superficie plana,
   borde 1px, selección = borde verde + fondo green-050 + ring de 3px. */
/* Colapsada por defecto (altura 0, no display:none: el iframe de Stripe
   necesita poder medirse); .is-visible la expande cuando hay wallet */
#checkoutModal .wallet-row {
    height: 0 !important;
    overflow: hidden !important;
    margin: 0 !important;
}
#checkoutModal .wallet-row.is-visible {
    height: auto !important;
    overflow: visible !important;
    margin: 0 0 14px !important;
}
#checkoutModal .pay-divider {
    display: none !important;
    align-items: center !important;
    gap: 12px !important;
    margin: 0 0 14px !important;
    font-size: 13px !important;
    font-weight: 600 !important;
    color: var(--text-3) !important;
}
#checkoutModal .pay-divider.is-visible {
    display: flex !important;
}
#checkoutModal .pay-divider span {
    flex: 1 !important;
    height: 1px !important;
    background: var(--border-2) !important;
}
#checkoutModal .pay-accordion {
    display: flex !important;
    flex-direction: column !important;
    gap: 10px !important;
    margin: 0 0 14px !important;
}
#checkoutModal .pay-option {
    border: 1px solid var(--border) !important;
    border-radius: var(--radius-md) !important;
    background: var(--bg) !important;
    overflow: hidden !important;
    transition: border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease), background var(--dur) var(--ease) !important;
}
#checkoutModal .pay-option:hover {
    border-color: #b9b9c0 !important;
}
#checkoutModal .pay-option.selected {
    border-color: var(--green) !important;
    background: var(--bg) !important;
    box-shadow: 0 0 0 3px var(--green-ring) !important;
    animation: offerSelect 0.3s var(--ease) !important;
}
#checkoutModal .pay-option-head {
    width: 100% !important;
    display: flex !important;
    align-items: center !important;
    gap: 12px !important;
    padding: 14px 16px !important;
    border: none !important;
    background: none !important;
    font-family: var(--font) !important;
    cursor: pointer !important;
    text-align: left !important;
}
#checkoutModal .pay-radio {
    width: 20px !important;
    height: 20px !important;
    border: 2px solid var(--border) !important;
    border-radius: 50% !important;
    flex-shrink: 0 !important;
    position: relative !important;
    transition: border-color var(--dur) var(--ease) !important;
}
#checkoutModal .pay-radio::after {
    content: '' !important;
    position: absolute !important;
    inset: 3px !important;
    border-radius: 50% !important;
    background: var(--green) !important;
    transform: scale(0) !important;
    transition: transform var(--dur) var(--ease) !important;
}
#checkoutModal .pay-option.selected .pay-radio {
    border-color: var(--green) !important;
}
#checkoutModal .pay-option.selected .pay-radio::after {
    transform: scale(1) !important;
}
#checkoutModal .pay-option-title {
    flex: 1 !important;
    font-size: 15px !important;
    font-weight: 600 !important;
    color: var(--text) !important;
}
#checkoutModal .pay-brands {
    display: flex !important;
    gap: 5px !important;
}
/* Iconos de marca: SVGs oficiales (Visa/MC/Amex, 24×16 nativo) y logo de MP */
#checkoutModal .pay-brands svg {
    width: 33px !important;
    height: 22px !important;
    display: block !important;
    border-radius: 4px !important;
}
#checkoutModal .pay-brand-mp-logo {
    height: 24px !important;
    width: auto !important;
    display: block !important;
    border: none !important;
    box-shadow: none !important;
}
#checkoutModal .pp-word {
    font-size: 14px !important;
    font-weight: 800 !important;
    font-style: italic !important;
}
#checkoutModal .pp-word span:first-child {
    color: #003087 !important;
}
#checkoutModal .pp-word span:last-child {
    color: #009cde !important;
}
#checkoutModal .pay-option-panel {
    display: none !important;
    padding: 2px 16px 16px !important;
}
#checkoutModal .pay-option.selected .pay-option-panel {
    display: block !important;
    animation: variationsSlide 0.25s var(--ease) !important;
}
#checkoutModal .pay-panel-note {
    margin: 0 0 12px !important;
    font-size: 13.5px !important;
    color: var(--text-2) !important;
    line-height: 1.5 !important;
}
/* Contenido informativo de Checkout Pro (estilo del plugin oficial de MP,
   adaptado a los tokens del modal) */
#checkoutModal .mp-checkout-pro-content {
    padding: 6px 0 2px !important;
}
#checkoutModal .mp-checkout-pro-benefits-title {
    margin: 0 0 14px !important;
    font-size: 16px !important;
    font-weight: 700 !important;
    color: var(--text) !important;
    letter-spacing: -0.01em !important;
    line-height: 1.3 !important;
}
#checkoutModal .mp-checkout-pro-benefit {
    display: flex !important;
    align-items: flex-start !important;
    gap: 10px !important;
    margin: 0 0 12px !important;
}
#checkoutModal .mp-checkout-pro-benefit-icon {
    width: 22px !important;
    height: 22px !important;
    flex-shrink: 0 !important;
    margin-top: 1px !important;
}
#checkoutModal .mp-checkout-pro-benefit-description {
    margin: 0 !important;
    font-size: 13.5px !important;
    color: var(--text-2) !important;
    line-height: 1.5 !important;
}
#checkoutModal .mp-checkout-pro-benefit-description b {
    color: var(--text) !important;
    font-weight: 600 !important;
}
#checkoutModal .mp-checkout-pro-payment-methods {
    display: flex !important;
    flex-wrap: wrap !important;
    justify-content: center !important;
    gap: 6px !important;
    margin-top: 14px !important;
}
#checkoutModal .mp-checkout-pro-payment-method-icon {
    width: 40px !important;
    height: 30px !important;
    padding: 4px !important;
    border: 1px solid var(--border-2) !important;
    border-radius: 6px !important;
    background: var(--bg) !important;
    box-sizing: border-box !important;
    object-fit: contain !important;
    display: block !important;
}
#checkoutModal .paypal-btn-zone {
    min-height: 50px !important;
    position: relative !important;
    z-index: 1 !important;
}
/* Vive en la zona de CTA (bajo el acordeón); visible solo con el panel MP */
#checkoutModal .btn-mp-pro {
    width: 100% !important;
    min-height: 54px !important;
    padding: 12px 40px !important;
    border: none !important;
    border-radius: var(--radius-md) !important;
    background: #009ee3 !important;
    color: #fff !important;
    font-family: var(--font) !important;
    font-size: 15px !important;
    font-weight: 700 !important;
    cursor: pointer !important;
    transition: background var(--dur) var(--ease) !important;
    position: relative !important;
    display: none !important;
    align-items: center !important;
    justify-content: center !important;
}
#checkoutModal .btn-mp-pro.is-visible {
    display: flex !important;
}
#checkoutModal .btn-mp-pro-arrow {
    position: absolute !important;
    right: 14px !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
    width: 18px !important;
    height: 18px !important;
}
#checkoutModal .btn-mp-pro:hover {
    background: #0089c6 !important;
}
#checkoutModal .btn-mp-pro[disabled] {
    opacity: 0.65 !important;
    cursor: not-allowed !important;
}
#checkoutModal #stripePaymentElement {
    margin: 0 0 4px !important;
}
/* Challenge 3DS de MP: iframe del emisor dentro del panel de tarjeta */
#checkoutModal .mp-3ds-container {
    margin: 0 0 4px !important;
}
#checkoutModal .mp-3ds-container iframe {
    width: 100% !important;
    height: 440px !important;
    border: 1px solid var(--border) !important;
    border-radius: var(--radius-sm) !important;
    background: var(--bg) !important;
}
#checkoutModal .pay-option-panel .mp-card-error {
    margin: 12px 0 0 !important;
}
@media (max-width: 480px) {
    #checkoutModal .pay-option-head {
        padding: 13px 14px !important;
        gap: 10px !important;
    }
    #checkoutModal .pay-option-panel {
        padding: 2px 14px 14px !important;
    }
    #checkoutModal .pay-brands svg {
        width: 30px !important;
        height: 20px !important;
    }
    #checkoutModal .pay-brand-mp-logo {
        height: 22px !important;
    }
}

/* Banner de confianza Mercado Pago en la pantalla de tarjeta */
#checkoutModal .mp-trust-banner {
    display: flex !important;
    align-items: center !important;
    gap: 12px !important;
    margin: 0 0 16px !important;
    padding: 12px 14px !important;
    border: 1px solid rgba(0, 158, 227, 0.28) !important;
    border-radius: var(--radius-sm) !important;
    background: linear-gradient(135deg, rgba(0, 158, 227, 0.09), rgba(0, 158, 227, 0.03)) !important;
}
#checkoutModal .mp-trust-icon {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 38px !important;
    height: 38px !important;
    flex-shrink: 0 !important;
    border-radius: 50% !important;
    background: #009EE3 !important;
    color: #fff !important;
}
#checkoutModal .mp-trust-icon svg {
    width: 20px !important;
    height: 20px !important;
}
#checkoutModal .mp-trust-text {
    display: flex !important;
    flex-direction: column !important;
    gap: 2px !important;
    min-width: 0 !important;
}
#checkoutModal .mp-trust-text strong {
    font-size: 13.5px !important;
    font-weight: 600 !important;
    color: var(--text) !important;
    line-height: 1.3 !important;
}
/* El nombre de la marca es lo que debe pesar: negro y más negrita que el
   resto (el azul MP queda para el icono, sobre este fondo se lavaba).
   Selector con specificity mayor que "#checkoutModal .mp-trust-text span"
   (la regla del subtítulo), que era la que lo pintaba de gris. */
#checkoutModal .mp-trust-text strong .mp-trust-brand {
    color: var(--text) !important;
    font-weight: 800 !important;
    font-size: 13.5px !important;
}
#checkoutModal .mp-trust-text span {
    font-size: 12px !important;
    color: var(--text-3) !important;
    line-height: 1.35 !important;
}

/* Toast suave de validación/errores (reemplaza los alert nativos) */
#checkoutModal .modal-toast {
    position: fixed !important;
    left: 50% !important;
    bottom: 28px !important;
    transform: translateX(-50%) translateY(10px) !important;
    display: flex !important;
    align-items: center !important;
    gap: 10px !important;
    max-width: min(92vw, 440px) !important;
    padding: 13px 18px !important;
    border-radius: 14px !important;
    background: rgba(31, 41, 55, 0.96) !important;
    color: #fff !important;
    font-family: var(--font) !important;
    font-size: 14px !important;
    font-weight: 500 !important;
    line-height: 1.4 !important;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3) !important;
    opacity: 0 !important;
    pointer-events: none !important;
    transition: opacity 0.25s ease, transform 0.25s ease !important;
    z-index: 2147483647 !important;
}
#checkoutModal .modal-toast.show {
    opacity: 1 !important;
    transform: translateX(-50%) translateY(0) !important;
}
#checkoutModal .modal-toast.error {
    background: rgba(185, 28, 28, 0.97) !important;
}
#checkoutModal .modal-toast svg {
    width: 18px !important;
    height: 18px !important;
    flex-shrink: 0 !important;
}

/* ===== Pago en efectivo (OXXO) en el modal ===== */
#checkoutModal .oxxo-option-btn {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 8px !important;
    width: 100% !important;
    margin-top: 10px !important;
    padding: 12px 14px !important;
    border: 1px solid var(--border) !important;
    border-radius: var(--radius-sm) !important;
    background: var(--bg) !important;
    color: var(--text-2) !important;
    font-family: var(--font) !important;
    font-size: 14px !important;
    font-weight: 600 !important;
    cursor: pointer !important;
    transition: border-color var(--dur) var(--ease), color var(--dur) var(--ease) !important;
    box-shadow: none !important;
}
#checkoutModal .oxxo-option-btn:hover {
    border-color: #b9b9c0 !important;
    color: var(--text) !important;
}
#checkoutModal .oxxo-option-btn[disabled] {
    opacity: 0.6 !important;
    cursor: wait !important;
}
#checkoutModal .oxxo-option-btn svg {
    width: 18px !important;
    height: 18px !important;
    flex-shrink: 0 !important;
}
#checkoutModal .oxxo-amount-row {
    display: flex !important;
    align-items: baseline !important;
    justify-content: space-between !important;
    font-size: 14px !important;
    color: var(--text-2) !important;
    margin-bottom: 14px !important;
}
#checkoutModal .oxxo-amount {
    font-size: 18px !important;
    font-weight: 700 !important;
    color: var(--text) !important;
    font-variant-numeric: tabular-nums !important;
}
#checkoutModal .oxxo-reference-block {
    border: 1px solid var(--border) !important;
    border-radius: var(--radius-md) !important;
    background: var(--bg-2) !important;
    padding: 16px !important;
    text-align: center !important;
    margin-bottom: 14px !important;
}
#checkoutModal .oxxo-reference-label {
    font-size: 11px !important;
    font-weight: 600 !important;
    color: var(--text-3) !important;
    text-transform: uppercase !important;
    letter-spacing: 0.5px !important;
    margin-bottom: 6px !important;
}
#checkoutModal .oxxo-reference {
    font-size: 22px !important;
    font-weight: 700 !important;
    letter-spacing: 2px !important;
    color: var(--text) !important;
    font-variant-numeric: tabular-nums !important;
    word-break: break-all !important;
    margin-bottom: 10px !important;
}
#checkoutModal .oxxo-copy-btn {
    display: inline-block !important;
    padding: 7px 14px !important;
    border: 1px solid var(--border) !important;
    border-radius: 999px !important;
    background: var(--bg) !important;
    color: var(--text-2) !important;
    font-family: var(--font) !important;
    font-size: 12.5px !important;
    font-weight: 600 !important;
    cursor: pointer !important;
    transition: border-color var(--dur) var(--ease), color var(--dur) var(--ease) !important;
    box-shadow: none !important;
}
#checkoutModal .oxxo-copy-btn:hover {
    border-color: #b9b9c0 !important;
    color: var(--text) !important;
}
#checkoutModal .oxxo-instructions {
    margin: 0 0 12px !important;
    padding-left: 18px !important;
    font-size: 13px !important;
    color: var(--text-2) !important;
    line-height: 1.5 !important;
    display: grid !important;
    gap: 6px !important;
}
#checkoutModal .oxxo-instructions strong {
    color: var(--text) !important;
    font-weight: 600 !important;
}
#checkoutModal .oxxo-expiry {
    font-size: 12px !important;
    color: var(--text-3) !important;
    text-align: center !important;
    margin: 0 0 10px !important;
}
#checkoutModal #btnOxxoDone {
    width: 100% !important;
    border: none !important;
    color: #fff !important;
    margin-top: 4px !important;
}

/* =====================================================================
   Selector de ofertas en la página: [cod_offer_selector]
   Mismo lenguaje que .offer-item del modal (borde 1px, selección con
   acento + fondo -050 + ring de 3px, badges planos). Se personaliza con
   las mismas variables --cod-* del modal.
   ===================================================================== */
.cod-offer-selector {
    --os-font: var(--cod-font, inherit);
    --os-text: var(--cod-text, #1d1d1f);
    --os-text-2: var(--cod-text-2, #6e6e73);
    --os-bg: var(--cod-bg, #ffffff);
    --os-border: var(--cod-border, #d2d2d7);
    --os-accent: var(--cod-accent, #16a34a);
    --os-accent-050: var(--cod-accent-soft, color-mix(in srgb, var(--os-accent) 6%, #fff));
    --os-ring: color-mix(in srgb, var(--os-accent) 14%, transparent);
    --os-save: var(--cod-save, #17703f);
    --os-radius: var(--cod-radius-md, 14px);
    font-family: var(--os-font);
    margin: 0 0 18px;
}

.cod-offer-selector .cod-os__title {
    margin: 0 0 12px;
    font-size: 13px;
    font-weight: 700;
    line-height: 1.3;
    color: var(--os-text);
}

.cod-os__list {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.cod-os__item {
    position: relative;
    display: grid;
    grid-template-columns: 20px minmax(0, 1fr) auto;
    align-items: center;
    gap: 12px;
    margin: 0;
    padding: 14px;
    background: var(--os-bg);
    border: 1px solid var(--os-border);
    border-radius: var(--os-radius);
    cursor: pointer;
    transition: border-color .2s ease, background .2s ease, box-shadow .2s ease;
    -webkit-tap-highlight-color: transparent;
}

.cod-os__item:hover {
    border-color: #b9b9c0;
}

.cod-offer-selector--images .cod-os__item {
    grid-template-columns: 20px 52px minmax(0, 1fr) auto;
}

.cod-os__img {
    display: block;
    width: 52px;
    height: 52px;
    object-fit: cover;
    border-radius: 10px;
    background: var(--cod-bg-2, #f5f5f7);
    border: 1px solid var(--cod-border-2, #e8e8ed);
}

@media (max-width: 420px) {
    .cod-offer-selector--images .cod-os__item {
        grid-template-columns: 18px 46px minmax(0, 1fr) auto;
        gap: 10px;
        padding: 12px;
    }
    .cod-offer-selector--images .cod-os__radio { width: 18px; height: 18px; }
    .cod-offer-selector--images .cod-os__radio::after { width: 8px; height: 8px; }
    .cod-os__img { width: 46px; height: 46px; }
    .cod-offer-selector--images .cod-os__price { font-size: 15px; }
}

.cod-os__item.is-selected {
    border-color: var(--os-accent);
    background: var(--os-accent-050);
    box-shadow: 0 0 0 3px var(--os-ring);
}

.cod-os__item input {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}

.cod-os__item:has(input:focus-visible) {
    outline: 2px solid var(--os-accent);
    outline-offset: 2px;
}

.cod-os__radio {
    display: grid;
    place-items: center;
    width: 20px;
    height: 20px;
    border: 2px solid #c9cfd8;
    border-radius: 50%;
    transition: border-color .2s ease;
}

.cod-os__radio::after {
    content: "";
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: var(--os-accent);
    transform: scale(0);
    transition: transform .2s cubic-bezier(.16, 1, .3, 1);
}

.cod-os__item.is-selected .cod-os__radio {
    border-color: var(--os-accent);
}

.cod-os__item.is-selected .cod-os__radio::after {
    transform: scale(1);
}

.cod-os__name {
    display: block;
    font-size: 14px;
    font-weight: 600;
    line-height: 1.3;
    color: var(--os-text);
}

.cod-os__meta {
    display: block;
    margin-top: 2px;
    font-size: 12px;
    line-height: 1.35;
    color: var(--os-text-2);
}

.cod-os__meta b {
    font-weight: 600;
    color: var(--os-save);
}

.cod-os__price {
    font-size: 16px;
    font-weight: 700;
    line-height: 1.2;
    color: var(--os-text);
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

.cod-os__badge {
    position: absolute;
    top: -9px;
    right: 12px;
    padding: 3px 9px;
    border-radius: 100px;
    background: var(--os-text);
    color: #fff;
    font-size: 10.5px;
    font-weight: 700;
    line-height: 1.3;
    letter-spacing: .02em;
}

.cod-os__item.is-selected .cod-os__badge {
    background: var(--os-accent);
}

@media (prefers-reduced-motion: reduce) {
    .cod-os__item,
    .cod-os__radio::after {
        transition: none;
    }
}

/* Modal mostrando solo la oferta elegida en la página */
.offers-section--single .offer-item {
    cursor: default;
}

.modal-overlay .offers-change-btn {
    align-self: flex-start;
    margin: -2px 0 0 2px;
    padding: 2px 0;
    background: none !important;
    border: 0 !important;
    box-shadow: none !important;
    font: inherit;
    font-size: 13px;
    font-weight: 600;
    color: var(--text-2);
    text-decoration: underline;
    text-underline-offset: 3px;
    cursor: pointer;
}

.modal-overlay .offers-change-btn:hover {
    color: var(--text);
}

/* =====================================================================
   Ofertas del modal, diseño uniforme (v2.28.0; ajuste "Estilo de las
   ofertas en el modal" = uniforme). Mismo patrón que [cod_offer_selector]:
   radio + imagen + nombre/precio por pieza + precio, etiqueta plana en la
   esquina. Con "personalizado" se usa el diseño anterior.
   ===================================================================== */
.offers-section:has(.offer-corner-badge) {
    gap: 14px;
    padding-top: 8px;
}

.offer-content--v2 {
    display: grid;
    grid-template-columns: 20px 52px minmax(0, 1fr) auto;
    align-items: center;
    gap: 12px;
}

.offer-content--v2 .offer-image {
    width: 52px;
    height: 52px;
    border-radius: 10px;
}

.offer-content--v2 .offer-title {
    margin-bottom: 2px;
    font-size: 14px;
}

.offer-meta {
    font-size: 12px;
    line-height: 1.35;
    color: var(--text-2);
}

.offer-meta b {
    font-weight: 600;
    color: var(--cod-save, #17703f);
}

.offer-content--v2 .offer-price {
    font-size: 17px;
    font-weight: 700;
}

.offer-radio {
    display: grid;
    place-items: center;
    width: 20px;
    height: 20px;
    border: 2px solid #c9cfd8;
    border-radius: 50%;
    transition: border-color var(--dur) var(--ease);
}

.offer-radio::after {
    content: "";
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: var(--green);
    transform: scale(0);
    transition: transform .2s var(--ease);
}

.offer-item.selected .offer-radio {
    border-color: var(--green);
}

.offer-item.selected .offer-radio::after {
    transform: scale(1);
}

.offer-corner-badge {
    position: absolute;
    top: -9px;
    right: 12px;
    padding: 3px 9px;
    border-radius: 100px;
    background: var(--text);
    color: #fff;
    font-size: 10.5px;
    font-weight: 700;
    line-height: 1.3;
    letter-spacing: .02em;
    white-space: nowrap;
}

.offer-item.selected .offer-corner-badge {
    background: var(--green);
}

@media (max-width: 420px) {
    .offer-content--v2 {
        grid-template-columns: 18px 46px minmax(0, 1fr) auto;
        gap: 10px;
    }
    .offer-content--v2 .offer-image { width: 46px; height: 46px; }
    .offer-radio { width: 18px; height: 18px; }
    .offer-radio::after { width: 8px; height: 8px; }
    .offer-content--v2 .offer-title { font-size: 13px; }
    .offer-content--v2 .offer-price { font-size: 15px; }
}

@media (prefers-reduced-motion: reduce) {
    .offer-radio,
    .offer-radio::after {
        transition: none;
    }
}
