/* Task #138 — Lottery Purchase Flow (Desktop + Tablet, additive). */

/* Silenciar hint de recharge mientras hay un modal del flujo abierto. */
body.cl-lottery-flow-open .recharge-hint-overlay {
    display: none !important;
}

/* Mis Tickets H-5: permitir wrap de números cuando una línea es larga.
   Ámbito estricto al modal de "Mis Tickets" para no afectar otros usos. */
#ticketsModalOverlay .numbers-line {
    flex-wrap: wrap;
    row-gap: 0.4rem;
}

/* Quick Pick rebrand (cyan/purple → gold). Aplica en todos los breakpoints
   porque el color púrpura/cian es una regresión vs replit.md
   "NON-NEGOTIABLE: Do NOT use cyan; palette is purple-dominant with gold". */
.lottery-modal .quick-pick-btn,
#lottery-modal .quick-pick-btn {
    background: linear-gradient(135deg, #FFD700 0%, #FFA500 100%) !important;
    color: #1a0a2e !important;
    border: 1px solid rgba(255, 215, 0, 0.6);
    box-shadow: 0 2px 10px rgba(255, 165, 0, 0.25);
}
.lottery-modal .quick-pick-btn svg,
#lottery-modal .quick-pick-btn svg {
    fill: #1a0a2e !important;
    stroke: #1a0a2e;
}
.lottery-modal .quick-pick-btn:hover,
#lottery-modal .quick-pick-btn:hover {
    box-shadow: 0 6px 18px rgba(255, 165, 0, 0.45);
    transform: translateY(-2px);
}

/* "Antes de Jugar" (lottery-info-modal): X siempre debe quedar a la derecha.
   El markup usa <p class="lottery-info-heading"> en vez de <h3>, por eso la
   regla existente (h3 { flex:1 }) no aplicaba — fix global. */
.lottery-info-header .lottery-info-heading {
    flex: 1;
    margin: 0;
    color: #d4af37;
    font-size: 1.1rem;
    font-weight: 700;
    font-family: 'Manrope', 'Poppins', sans-serif;
    text-transform: uppercase;
    letter-spacing: 1px;
}
.lottery-info-header .lottery-info-close-btn {
    margin-left: auto;
    flex-shrink: 0;
}

/* Trust strip (jackpot, cierre, balance, ticket oficial). UX MEDIO 2026-05-14:
   intensidad bajada (background 0.05 → 0.035, borders 0.15 → 0.10),
   más respiración vertical (padding 0.6 → 0.7), valores menos fuertes
   para que no compitan con el header. */
.cl-trust-strip {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 0.5rem 0.8rem;
    padding: 0.7rem 1rem;
    background: rgba(255, 215, 0, 0.035);
    border-top: 1px solid rgba(255, 215, 0, 0.1);
    border-bottom: 1px solid rgba(255, 215, 0, 0.1);
    font-family: 'Manrope', sans-serif;
}
.cl-trust-cell {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
    min-width: 0;
}
.cl-trust-label {
    font-size: 0.7rem;
    color: rgba(255, 255, 255, 0.55);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}
.cl-trust-value {
    font-size: 0.85rem;
    color: rgba(255, 215, 0, 0.92);
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.cl-trust-badge { flex-direction: row; align-items: center; gap: 0.4rem; }
.cl-trust-badge .cl-trust-value { color: #2ED573; font-weight: 600; }
.cl-trust-icon { font-size: 1rem; }

/* Botón opt-in "Agregar otra línea" en review screen. */
.cl-add-line-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    width: calc(100% - 2rem);
    margin: 0.75rem 1rem 0;
    padding: 0.75rem 1rem;
    background: transparent;
    border: 1px dashed rgba(255, 215, 0, 0.5);
    border-radius: 12px;
    color: #FFD700;
    font-family: 'Manrope', sans-serif;
    font-size: 0.9rem;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.2s ease, border-color 0.2s ease;
}
.cl-add-line-btn:hover:not(:disabled) {
    background: rgba(255, 215, 0, 0.08);
    border-color: #FFD700;
}
.cl-add-line-btn:disabled { opacity: 0.4; cursor: not-allowed; }
.cl-add-line-btn span:first-child { font-size: 1.2rem; line-height: 1; }

/* Ticket ID / Tx ref en pantalla de confirmación. */
.lottery-tx-ref {
    font-family: 'JetBrains Mono', 'Courier New', monospace !important;
    font-size: 0.8rem !important;
    cursor: help;
}

/* =========================================================================
   ≥768px — focus-visible y refuerzos a11y (no impactan mobile)
   ========================================================================= */
@media (min-width: 768px) {
    .lottery-modal .number-btn:focus-visible,
    .review-screen .number-btn:focus-visible,
    #lottery-modal .number-btn:focus-visible {
        outline: 2px solid #FFD700;
        outline-offset: 3px;
        box-shadow: 0 0 0 4px rgba(255, 215, 0, 0.18);
    }
    .lottery-modal .quick-pick-btn:focus-visible,
    .lottery-info-close-btn:focus-visible {
        outline: 2px solid #FFD700;
        outline-offset: 2px;
    }
    .lottery-info-header .lottery-info-heading {
        font-size: 1.25rem;
    }
}

/* =========================================================================
   TABLET (768 – 1023px)
   Contenido del modal centrado y limitado, sin botones full-width.
   ========================================================================= */
@media (min-width: 768px) {
    .cl-trust-strip {
        grid-template-columns: repeat(4, 1fr);
        padding: 0.75rem 1.5rem;
    }
    .cl-trust-value { font-size: 0.95rem; }
    .cl-add-line-btn { max-width: 480px; margin-left: auto; margin-right: auto; }
}
@media (min-width: 768px) and (max-width: 1023px) {
    .lottery-modal .play-tabs,
    .lottery-modal .done-message,
    .lottery-modal .number-selection-container,
    .lottery-modal .review-order-container {
        max-width: 760px;
        margin-left: auto;
        margin-right: auto;
        width: 100%;
    }

    .lottery-modal .main-numbers {
        display: grid;
        grid-template-columns: repeat(8, 1fr);
        gap: 8px;
        max-width: 600px;
        margin-left: auto;
        margin-right: auto;
        justify-items: center;
    }
    .lottery-modal .main-numbers .number-btn {
        width: 48px;
        height: 48px;
        margin: 0;
        font-size: 0.95rem;
    }

    .lottery-modal .special-numbers-grid {
        grid-template-columns: repeat(8, 1fr);
        max-width: 600px;
        margin-left: auto;
        margin-right: auto;
    }
    .lottery-modal .special-numbers-grid .number-btn {
        width: 48px;
        height: 48px;
    }

    .lottery-modal .review-order-btn {
        max-width: 480px;
        margin-left: auto;
        margin-right: auto;
        width: 100%;
        display: flex;
    }

    .review-screen .selected-lines-container,
    .review-screen .lottery-summary,
    .checkout-screen .checkout-content {
        max-width: 720px;
        margin-left: auto;
        margin-right: auto;
    }
    .checkout-screen .payment-btn {
        max-width: 480px;
        margin-left: auto;
        margin-right: auto;
    }
}

/* =========================================================================
   DESKTOP (≥1024px)
   "Ticket builder": panel izq con tabs (sticky) + Quick Pick, panel der
   con la rejilla de números, todo dentro de un stage centrado.
   ========================================================================= */
@media (min-width: 1024px) {
    /* Layout 2-columnas con filas separadas para tabs/done en la columna
       izquierda. La columna derecha ("right") ocupa ambas filas medias.
       Cuando .done-message tiene display:flex (dispatched por JS) la fila
       "done" crece; cuando está display:none, la fila colapsa a 0
       (auto = content size) sin afectar la columna derecha. */
    .lottery-modal.open {
        display: grid !important;
        grid-template-columns: minmax(280px, 320px) minmax(0, 1fr);
        grid-template-rows: auto auto auto auto 1fr auto;
        grid-template-areas:
            "header header"
            "trust  trust"
            "tabs   right"
            "done   right"
            "spacer right"
            "footer footer";
        max-width: 1180px;
        margin: 0 auto;
        height: 100vh;
        height: 100dvh;
        background: linear-gradient(180deg, rgba(10, 5, 20, 0.98), rgba(20, 10, 40, 0.98)) !important;
        border-left: 1px solid rgba(255, 215, 0, 0.08);
        border-right: 1px solid rgba(255, 215, 0, 0.08);
    }

    .lottery-modal .modal-header           { grid-area: header; }
    .lottery-modal > .cl-trust-strip       { grid-area: trust; }
    .lottery-modal .play-tabs              { grid-area: tabs; }
    .lottery-modal .done-message           { grid-area: done; }
    .lottery-modal .number-selection-container { grid-area: right; }
    .lottery-modal .review-order-container { grid-area: footer; }

    /* Estética del rail izquierdo */
    .lottery-modal .play-tabs {
        padding: 1.5rem 1.25rem;
        background: rgba(15, 8, 30, 0.6);
        border-right: 1px solid rgba(255, 255, 255, 0.06);
        border-bottom: none;
        align-self: start;
    }
    .lottery-modal .done-message {
        padding: 1rem 1.25rem;
        background: rgba(15, 8, 30, 0.6);
        border-right: 1px solid rgba(255, 255, 255, 0.06);
        border-bottom: none;
        flex-direction: column;
        gap: 0.75rem;
        align-items: stretch;
    }
    .lottery-modal .done-message .done-check {
        justify-content: center;
    }
    .lottery-modal .done-message .quick-pick-btn {
        width: 100%;
        justify-content: center;
        padding: 0.75rem 1rem;
        font-size: 0.95rem;
    }

    /* "spacer" celda fantasma a la izq para rellenar visualmente la columna */
    .lottery-modal.open::before {
        content: "";
        grid-area: spacer;
        background: rgba(15, 8, 30, 0.6);
        border-right: 1px solid rgba(255, 255, 255, 0.06);
    }

    .lottery-modal .number-selection-container {
        padding: 2rem 2.25rem;
        overflow-y: auto;
    }

    .lottery-modal .review-order-container {
        padding: 1rem 2rem;
        background: rgba(10, 5, 20, 0.96);
        border-top: 1px solid rgba(255, 215, 0, 0.18);
    }
    .lottery-modal .review-order-btn {
        max-width: 480px;
        margin-left: auto;
        margin-right: auto;
        width: 100%;
        display: flex;
        height: 52px;
        font-size: 1.05rem;
    }

    /* Rejilla principal: 10 cols, balls 50px */
    .lottery-modal .main-numbers {
        display: grid;
        grid-template-columns: repeat(10, 1fr);
        gap: 10px;
        max-width: 660px;
        margin: 0 auto 1.5rem;
        justify-items: center;
    }
    .lottery-modal .main-numbers .number-btn {
        width: 50px;
        height: 50px;
        margin: 0;
        font-size: 1rem;
        font-weight: 700;
        background: rgba(255, 255, 255, 0.06);
        border: 2px solid rgba(255, 255, 255, 0.14);
        transition: transform 0.15s ease, background 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
    }
    .lottery-modal .main-numbers .number-btn:hover {
        transform: translateY(-2px);
        background: rgba(255, 215, 0, 0.12);
        border-color: rgba(255, 215, 0, 0.55);
        box-shadow: 0 4px 12px rgba(255, 215, 0, 0.25);
    }
    .lottery-modal .main-numbers .number-btn.selected {
        background: linear-gradient(135deg, #FFD700, #FFA500);
        color: #1a0a2e;
        border-color: #FFD700;
        box-shadow: 0 4px 16px rgba(255, 165, 0, 0.45),
                    inset 0 0 0 2px rgba(255, 255, 255, 0.6);
    }
    /* UX MEDIO 2026-05-14: selected ring + disabled visual claro. */
    .lottery-modal .main-numbers .number-btn[disabled],
    .lottery-modal .main-numbers .number-btn.disabled,
    .lottery-modal .special-numbers-grid .number-btn[disabled],
    .lottery-modal .special-numbers-grid .number-btn.disabled {
        opacity: 0.35;
        cursor: not-allowed;
        filter: grayscale(0.4);
        pointer-events: none;
    }
    .lottery-modal .main-numbers .number-btn.selected::after {
        content: "";
        position: absolute;
        inset: -4px;
        border-radius: 50%;
        border: 1px solid rgba(255, 215, 0, 0.55);
        pointer-events: none;
    }
    .lottery-modal .main-numbers .number-btn { position: relative; }

    /* Special numbers */
    .lottery-modal .special-numbers {
        max-width: 660px;
        margin: 1.5rem auto 0;
        background: rgba(255, 107, 107, 0.06);
        border: 1px solid rgba(255, 107, 107, 0.18);
    }
    .lottery-modal .special-numbers-grid {
        display: grid;
        grid-template-columns: repeat(10, 1fr);
        gap: 10px;
    }
    .lottery-modal .special-numbers-grid .number-btn {
        width: 100%;
        max-width: 50px;
        aspect-ratio: 1;
        height: auto;
        font-size: 1rem;
        font-weight: 700;
    }
    .lottery-modal .special-numbers-grid .number-btn:hover {
        transform: translateY(-2px);
        box-shadow: 0 4px 12px rgba(255, 107, 107, 0.35);
    }
    .lottery-modal .special-numbers-grid .number-btn.selected {
        box-shadow: 0 4px 16px rgba(255, 107, 107, 0.5),
                    inset 0 0 0 2px rgba(255, 255, 255, 0.6);
    }

    .lottery-modal .selection-indicator,
    .lottery-modal .section-header {
        max-width: 660px;
        margin-left: auto;
        margin-right: auto;
    }
    .lottery-modal .selection-indicator {
        font-size: 1rem;
        padding: 0.65rem 1.25rem;
    }

    .lottery-modal .tabs-container { gap: 0.75rem; }
    .lottery-modal .tab-button { width: 44px; height: 44px; }

    /* Review screen */
    .review-screen.open {
        background: rgba(8, 4, 18, 0.96) !important;
        backdrop-filter: blur(10px);
    }
    .review-screen .price-details-panel,
    .review-screen .selected-lines-container,
    .review-screen .review-actions,
    .review-screen .review-content {
        max-width: 720px;
        margin-left: auto;
        margin-right: auto;
        width: 100%;
    }
    .review-screen .checkout-btn {
        max-width: 480px;
        margin-left: auto;
        margin-right: auto;
        width: 100%;
        display: flex;
        height: 52px;
        font-size: 1.05rem;
    }

    /* Checkout. UX MEDIO 2026-05-14: backdrop 0.94 → 0.91 + border/shadow
       en card para mantener sensación de "modal sobre app". */
    .checkout-screen.open {
        background: rgba(5, 3, 12, 0.91) !important;
        backdrop-filter: blur(10px);
        -webkit-backdrop-filter: blur(10px);
    }
    .checkout-screen .checkout-content {
        border: 1px solid rgba(255, 215, 0, 0.18);
        border-radius: 16px;
        box-shadow: 0 24px 60px rgba(0, 0, 0, 0.55), 0 0 32px rgba(255, 215, 0, 0.08);
        background: linear-gradient(160deg, rgba(30, 18, 55, 0.55), rgba(15, 8, 28, 0.55));
    }
    .checkout-screen .checkout-content {
        max-width: 720px;
        padding: 2.5rem 2rem;
    }
    .checkout-screen .payment-btn {
        max-width: 480px;
        margin-left: auto;
        margin-right: auto;
        width: 100%;
        display: flex;
        height: 52px;
        font-size: 1.05rem;
    }

    /* Pago Completado */
    #lottery-ticket-confirmation {
        align-items: center;
    }
    #lottery-ticket-confirmation .lottery-ticket-content {
        max-width: 640px;
        padding: 2.25rem;
    }
    #lottery-ticket-confirmation .lottery-ticket-header h2 { font-size: 1.6rem; }
    #lottery-ticket-confirmation .lottery-ticket-footer {
        justify-content: center;
        gap: 1rem;
    }
    #lottery-ticket-confirmation .lottery-ticket-btn { max-width: 240px; }
}

/* =========================================================================
   PAGO COMPLETADO — refinement de la confirmación (todas las viewports)
   Justificado: la confirmación previa estaba sin estilos definidos para
   varias clases internas; este bloque les da la apariencia esperada
   (visualmente neutra en mobile, no compite con el flujo).
   ========================================================================= */
.lottery-ticket-modal {
    position: fixed;
    inset: 0;
    z-index: 10010;
    background: rgba(5, 3, 12, 0.94);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    display: none;
    align-items: flex-start;
    justify-content: center;
    overflow-y: auto;
    padding: 1rem;
}
.lottery-ticket-modal[style*="flex"] {
    display: flex !important;
}
.lottery-ticket-content {
    background: linear-gradient(160deg, rgba(30, 18, 55, 0.98), rgba(15, 8, 28, 0.98));
    border: 1px solid rgba(255, 215, 0, 0.35);
    border-radius: 20px;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.6), 0 0 30px rgba(255, 215, 0, 0.12);
    padding: 1.5rem;
    color: #fff;
    width: 100%;
    max-width: 560px;
    margin: 1rem auto;
}
.lottery-ticket-header {
    text-align: center;
    margin-bottom: 1.25rem;
    padding-bottom: 1rem;
    border-bottom: 1px solid rgba(255, 215, 0, 0.18);
}
.lottery-ticket-header h2 {
    color: #FFD700;
    font-size: 1.2rem;
    font-weight: 800;
    margin: 0 0 0.5rem 0;
    font-family: 'Manrope', 'Poppins', sans-serif;
}
.lottery-ticket-header h2::before {
    content: "✓";
    display: inline-block;
    width: 28px;
    height: 28px;
    line-height: 28px;
    border-radius: 50%;
    background: linear-gradient(135deg, #2ED573, #7bed9f);
    color: #0a3d1a;
    font-weight: 900;
    margin-right: 0.5rem;
    text-align: center;
    vertical-align: middle;
}
.lottery-ticket-logo img { height: 32px; opacity: 0.9; }

.lottery-info-row {
    display: flex;
    justify-content: space-between;
    padding: 0.55rem 0;
    border-bottom: 1px dashed rgba(255, 255, 255, 0.08);
    font-size: 0.9rem;
    gap: 0.5rem;
}
.lottery-info-row:last-child { border-bottom: none; }
.lottery-info-label { color: rgba(255, 255, 255, 0.7); }
.lottery-info-value { color: #FFD700; font-weight: 600; text-align: right; }

/* UX MEDIO 2026-05-14: jerarquía recibo. Ticket ID prominente y agrupado
   con la referencia blockchain en una "tarjeta" tipo recibo. */
.lottery-info-row-id,
.lottery-info-row-txref {
    align-items: center;
}
.lottery-info-row-id .lottery-ticket-id-value {
    font-size: 1.1rem;
    font-weight: 800;
    color: #FFD700;
    letter-spacing: 0.5px;
    word-break: break-all;
}
.lottery-info-row-txref .lottery-info-label {
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: rgba(255, 255, 255, 0.55);
}
.lottery-info-row-txref .lottery-tx-ref {
    color: rgba(255, 215, 0, 0.85) !important;
    font-weight: 500 !important;
}
.lottery-ticket-info,
.lottery-info-grid {
    background: rgba(255, 215, 0, 0.04);
    border: 1px solid rgba(255, 215, 0, 0.12);
    border-radius: 12px;
    padding: 0.4rem 0.85rem;
    margin: 0.5rem 0 1rem;
}

.lottery-ticket-numbers {
    margin: 1rem 0;
    padding: 0.85rem;
    background: rgba(255, 215, 0, 0.05);
    border: 1px solid rgba(255, 215, 0, 0.15);
    border-radius: 12px;
}
.lottery-ticket-numbers h3 {
    color: #FFD700;
    font-size: 0.9rem;
    margin: 0 0 0.6rem 0;
}
.ticket-line-info {
    padding: 0.35rem 0;
    color: #fff;
    font-size: 0.85rem;
    letter-spacing: 0.5px;
    border-bottom: 1px dashed rgba(255, 255, 255, 0.06);
    word-break: break-word;
}
.ticket-line-info:last-child { border-bottom: none; }
.ticket-line-info strong { color: #FFA500; }

.lottery-price-breakdown { margin-top: 0.5rem; }
.lottery-price-row {
    display: flex;
    justify-content: space-between;
    padding: 0.35rem 0;
    color: rgba(255, 255, 255, 0.85);
    font-size: 0.85rem;
    gap: 0.5rem;
}
.lottery-price-row.lottery-total {
    border-top: 1px solid rgba(255, 215, 0, 0.25);
    margin-top: 0.4rem;
    padding-top: 0.6rem;
    color: #FFD700;
    font-size: 1rem;
}

.lottery-ticket-footer {
    display: flex;
    gap: 0.5rem;
    margin-top: 1.25rem;
    flex-wrap: wrap;
}
.lottery-ticket-btn {
    flex: 1;
    min-width: 130px;
    padding: 0.8rem 1rem;
    border-radius: 12px;
    font-weight: 700;
    font-size: 0.9rem;
    cursor: pointer;
    border: none;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.lottery-btn-primary {
    background: linear-gradient(135deg, #FFD700, #FFA500);
    color: #1a0a2e;
    box-shadow: 0 4px 14px rgba(255, 165, 0, 0.35);
}
.lottery-btn-primary:hover {
    transform: translateY(-2px);
    box-shadow: 0 6px 20px rgba(255, 165, 0, 0.5);
}
.lottery-btn-secondary {
    background: rgba(255, 255, 255, 0.08);
    color: #fff;
    border: 1px solid rgba(255, 255, 255, 0.18);
}
.lottery-btn-secondary:hover {
    background: rgba(255, 255, 255, 0.14);
    border-color: rgba(255, 215, 0, 0.4);
}
@media (min-width: 768px) {
    .lottery-ticket-btn:focus-visible {
        outline: 2px solid #FFD700;
        outline-offset: 2px;
    }
}

/* =========================================================================
   "MIS TICKETS" CARD REDESIGN — v2 receipt layout (2026-05-14)
   Scope estricto: #ticketsModalOverlay .ticket-list-item.
   Refactor v2: el grid 3-col original wrapeaba las bolas verticalmente
   en un modal de 700px. Layout nuevo = recibo vertical (header logo+
   título+cost → tira de números horizontal con perforaciones → footer
   meta+CTA). Es el patrón que usan apps reales (Stake, theLotter).
   ========================================================================= */
#ticketsModalOverlay .tickets-modal-content { max-width: 760px; }

#ticketsModalOverlay .tickets-list-container {
    display: flex;
    flex-direction: column;
    gap: 14px;
    padding: 4px 2px 8px;
}

/* ====== CARD = recibo vertical ====== */
#ticketsModalOverlay .ticket-list-item {
    position: relative;
    background:
        linear-gradient(160deg, rgba(45, 17, 80, 0.60) 0%, rgba(22, 9, 42, 0.85) 55%, rgba(15, 6, 30, 0.92) 100%);
    border: 1px solid rgba(255, 215, 0, 0.22);
    border-radius: 16px;
    padding: 0;
    box-shadow:
        0 14px 36px -14px rgba(0, 0, 0, 0.6),
        inset 0 1px 0 rgba(255, 215, 0, 0.06);
    color: #f6efff;
    overflow: hidden;
    min-height: 0;
    transition: border-color 0.22s ease, transform 0.22s ease, box-shadow 0.22s ease;
}
#ticketsModalOverlay .ticket-list-item:hover {
    transform: translateY(-2px);
    border-color: rgba(255, 215, 0, 0.5);
    box-shadow:
        0 22px 44px -14px rgba(0, 0, 0, 0.65),
        0 0 28px rgba(255, 215, 0, 0.10),
        inset 0 1px 0 rgba(255, 215, 0, 0.10);
}

/* Botón cerrar (ocultar) — esquina superior derecha del card */
#ticketsModalOverlay .hide-ticket-btn {
    position: absolute;
    top: 10px;
    right: 10px;
    width: 26px;
    height: 26px;
    background: rgba(255, 255, 255, 0.06);
    border: 1px solid rgba(255, 255, 255, 0.10);
    color: rgba(255, 255, 255, 0.55);
    border-radius: 8px;
    z-index: 5;
    transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}
#ticketsModalOverlay .hide-ticket-btn:hover {
    background: rgba(255, 215, 0, 0.14);
    border-color: rgba(255, 215, 0, 0.35);
    color: #FFD700;
    transform: none;
}
#ticketsModalOverlay .hide-ticket-btn i { width: 13px; height: 13px; }

/* Reset del .ticket-list-content: ahora es un stack vertical de 3 zonas */
#ticketsModalOverlay .ticket-list-content {
    display: flex;
    flex-direction: column;
    gap: 0;
    align-items: stretch;
}

/* ---------- HEADER del recibo: logo + título + cost ---------- */
#ticketsModalOverlay .ticket-list-left {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 16px 20px 14px;
    min-width: 0;
}
#ticketsModalOverlay .ticket-list-logo {
    width: 48px;
    height: 48px;
    border-radius: 12px;
    overflow: hidden;
    background: #fff;
    border: 1px solid rgba(255, 215, 0, 0.30);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.35);
    flex-shrink: 0;
}
#ticketsModalOverlay .ticket-list-logo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
#ticketsModalOverlay .ticket-list-info {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 3px;
}
#ticketsModalOverlay .ticket-list-title {
    font-family: 'Manrope', system-ui, sans-serif;
    font-size: 1.05rem;
    font-weight: 800;
    color: #FFD700;
    letter-spacing: 0.01em;
    text-shadow: none;
    margin: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
#ticketsModalOverlay .ticket-list-details {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    gap: 4px 10px;
}
#ticketsModalOverlay .ticket-list-id,
#ticketsModalOverlay .ticket-list-owner {
    font-family: 'JetBrains Mono', 'Courier New', monospace;
    font-size: 0.7rem;
    color: rgba(246, 239, 255, 0.55);
    font-weight: 500;
    letter-spacing: 0.02em;
    overflow: hidden;
    text-overflow: ellipsis;
}
#ticketsModalOverlay .ticket-list-id { color: rgba(255, 215, 0, 0.75); }

/* Cost chip flota a la derecha del header (absolute para no tocar JS) */
#ticketsModalOverlay .ticket-list-cost {
    position: absolute;
    top: 14px;
    right: 48px;
    text-align: right;
    padding: 6px 12px;
    background: linear-gradient(135deg, rgba(255, 215, 0, 0.16), rgba(255, 165, 0, 0.08));
    border: 1px solid rgba(255, 215, 0, 0.35);
    border-radius: 999px;
    z-index: 4;
}
#ticketsModalOverlay .ticket-list-cost .cost-value {
    font-family: 'Manrope', system-ui, sans-serif;
    font-size: 0.92rem;
    font-weight: 800;
    color: #FFD700;
    text-shadow: none;
    letter-spacing: 0.01em;
    white-space: nowrap;
}

/* ---------- TIRA DE NÚMEROS (centro del recibo) ---------- */
#ticketsModalOverlay .ticket-list-center {
    padding: 14px 20px 16px;
    background:
        linear-gradient(180deg, rgba(255, 215, 0, 0.04), rgba(255, 215, 0, 0.015));
    border-top: 1px dashed rgba(255, 215, 0, 0.22);
    border-bottom: 1px dashed rgba(255, 215, 0, 0.22);
    position: relative;
    min-width: 0;
}
/* Perforaciones tipo ticket real */
#ticketsModalOverlay .ticket-list-center::before,
#ticketsModalOverlay .ticket-list-center::after {
    content: "";
    position: absolute;
    top: 50%;
    width: 14px;
    height: 14px;
    background: rgba(15, 6, 30, 1);
    border-radius: 50%;
    transform: translateY(-50%);
    border: 1px solid rgba(255, 215, 0, 0.20);
}
#ticketsModalOverlay .ticket-list-center::before { left: -8px; }
#ticketsModalOverlay .ticket-list-center::after  { right: -8px; }

#ticketsModalOverlay .ticket-list-numbers {
    display: flex;
    flex-direction: column;
    gap: 8px;
    align-items: stretch;
}
#ticketsModalOverlay .numbers-line {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: center;
    justify-content: center;
    row-gap: 8px;
}
#ticketsModalOverlay .number-ball {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    border-radius: 50%;
    font-family: 'Manrope', system-ui, sans-serif;
    font-size: 0.95rem;
    font-weight: 800;
    line-height: 1;
    flex-shrink: 0;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.4);
}
#ticketsModalOverlay .number-ball.main {
    background: radial-gradient(circle at 30% 28%, #fff7d6 0%, #FFD700 45%, #b88a00 100%);
    color: #1a0a2e;
    border: 1px solid rgba(255, 215, 0, 0.65);
    text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4);
}
#ticketsModalOverlay .number-ball.special {
    background: radial-gradient(circle at 30% 28%, #ffe4d6 0%, #ff7b3a 45%, #b8341a 100%);
    color: #fff;
    border: 1px solid rgba(255, 130, 90, 0.75);
    box-shadow: 0 0 0 2px rgba(255, 165, 0, 0.20), 0 2px 8px rgba(0, 0, 0, 0.4);
    margin-left: 6px;
}

/* ---------- FOOTER del recibo: hash + CTA ---------- */
#ticketsModalOverlay .ticket-list-right {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
    padding: 12px 20px 14px;
    min-width: 0;
}
#ticketsModalOverlay .ticket-list-hash {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 7px 12px;
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid rgba(255, 255, 255, 0.10);
    border-radius: 8px;
    font-family: 'JetBrains Mono', 'Courier New', monospace;
    font-size: 0.72rem;
    color: rgba(246, 239, 255, 0.65);
    cursor: pointer;
    transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease;
    white-space: nowrap;
    overflow: hidden;
    flex: 1 1 auto;
    min-width: 0;
    max-width: 100%;
}
#ticketsModalOverlay .ticket-list-hash:hover {
    background: rgba(255, 215, 0, 0.10);
    border-color: rgba(255, 215, 0, 0.35);
    color: #FFD700;
}
#ticketsModalOverlay .ticket-list-hash i { width: 12px; height: 12px; flex-shrink: 0; }
#ticketsModalOverlay .ticket-list-hash span { overflow: hidden; text-overflow: ellipsis; min-width: 0; }

/* CTA "Ver" — gold, NO cyan (override del legacy #00D4FF) */
#ticketsModalOverlay .ticket-list-btn,
#ticketsModalOverlay .ticket-list-btn.view-ticket {
    background: linear-gradient(135deg, #FFD700 0%, #FFA500 100%) !important;
    color: #1a0a2e !important;
    border: 1px solid rgba(255, 215, 0, 0.6);
    border-radius: 10px;
    padding: 9px 16px;
    font-family: 'Manrope', system-ui, sans-serif;
    font-weight: 800;
    font-size: 0.78rem;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    box-shadow: 0 4px 14px rgba(255, 165, 0, 0.30);
    min-width: 110px;
    flex: 0 0 auto;
    justify-content: center;
}
#ticketsModalOverlay .ticket-list-btn:hover,
#ticketsModalOverlay .ticket-list-btn.view-ticket:hover {
    background: linear-gradient(135deg, #FFC700 0%, #FF8C00 100%) !important;
    box-shadow: 0 6px 18px rgba(255, 165, 0, 0.50);
    transform: translateY(-1px);
}
#ticketsModalOverlay .ticket-list-btn i { width: 14px; height: 14px; }

/* "Procesando" — chip neutral */
#ticketsModalOverlay .ticket-processing-message {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 9px 14px;
    border-radius: 10px;
    background: rgba(255, 255, 255, 0.04);
    border: 1px dashed rgba(255, 215, 0, 0.30);
    color: rgba(246, 239, 255, 0.78);
    font-family: 'Manrope', system-ui, sans-serif;
    font-size: 0.74rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    flex: 0 0 auto;
}
#ticketsModalOverlay .ticket-processing-message i {
    width: 13px;
    height: 13px;
    color: #FFD700;
}

/* New-ticket pulse en oro */
#ticketsModalOverlay .ticket-list-item.new-ticket {
    animation: ticketsModalNewPulse 2.4s ease-out;
    border-color: rgba(255, 215, 0, 0.65) !important;
}
@keyframes ticketsModalNewPulse {
    0% {
        box-shadow:
            0 0 0 0 rgba(255, 215, 0, 0.55),
            0 14px 36px -14px rgba(0, 0, 0, 0.6);
    }
    100% {
        box-shadow:
            0 0 0 12px rgba(255, 215, 0, 0),
            0 14px 36px -14px rgba(0, 0, 0, 0.6);
    }
}

/* Mobile (≤560px) — cost chip baja inline (no absolute), footer apilado */
@media (max-width: 560px) {
    #ticketsModalOverlay .ticket-list-left {
        padding: 14px 16px 12px;
        gap: 12px;
        flex-wrap: wrap;
        padding-right: 44px; /* deja espacio para hide-ticket-btn */
    }
    #ticketsModalOverlay .ticket-list-logo { width: 42px; height: 42px; border-radius: 10px; }
    #ticketsModalOverlay .ticket-list-info { flex: 1 1 calc(100% - 56px); min-width: 0; }
    #ticketsModalOverlay .ticket-list-title { font-size: 0.95rem; }
    #ticketsModalOverlay .ticket-list-details { font-size: 0.68rem; }
    /* Cost chip pasa a flow normal, alineado a la izquierda bajo el header */
    #ticketsModalOverlay .ticket-list-cost {
        position: static;
        flex: 1 1 100%;
        text-align: left;
        padding: 5px 12px;
        align-self: flex-start;
    }
    #ticketsModalOverlay .ticket-list-cost .cost-value { font-size: 0.85rem; }
    #ticketsModalOverlay .ticket-list-center { padding: 12px 16px; }
    #ticketsModalOverlay .ticket-list-center::before,
    #ticketsModalOverlay .ticket-list-center::after { width: 12px; height: 12px; }
    #ticketsModalOverlay .number-ball { width: 32px; height: 32px; font-size: 0.82rem; }
    #ticketsModalOverlay .ticket-list-right { padding: 10px 16px 12px; flex-direction: column; align-items: stretch; gap: 8px; }
    #ticketsModalOverlay .ticket-list-hash { flex: 1 1 100%; justify-content: center; }
    #ticketsModalOverlay .ticket-list-btn,
    #ticketsModalOverlay .ticket-processing-message { flex: 1 1 100%; width: 100%; }
}
