@font-face {
    font-family: 'TacticSans';
    src: url('./TacticSans-Blk.otf') format('opentype');
    font-weight: 900;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'TacticSans';
    src: url('./TacticSansExd-Blk.otf') format('opentype');
    font-weight: 800;
    font-style: normal;
    font-display: swap;
}

:root {
    --bg-primary: #0d1117;
    --bg-secondary: #111827;
    --bg-card: rgba(255, 255, 255, 0.05);
    --bg-card-hover: rgba(255, 255, 255, 0.1);
    --accent-cyan: #3F93EF;
    --accent-red: #e1251b;
    --accent-purple: #005DF3;
    --accent-yellow: #FEE40D;
    --text-primary: #ffffff;
    --text-secondary: rgba(255, 255, 255, 0.7);
    --text-muted: rgba(255, 255, 255, 0.4);
    --border-glass: rgba(255, 255, 255, 0.1);
    --border-glow: rgba(63, 147, 239, 0.5);
    --shadow-glow: 0 0 20px rgba(63, 147, 239, 0.15);
}

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

body {
    background: none;
    font-family: 'Montserrat', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
    color: var(--text-primary);
    min-height: 100vh;
    overflow-x: hidden;
    position: relative;
}

body::after {
    content: '';
    position: fixed;
    inset: 0;
    background: linear-gradient(135deg, rgba(5,10,20,0.91) 0%, rgba(0,15,40,0.88) 50%, rgba(5,10,20,0.91) 100%),
                url('/templates/ferchito/img/fondo_marca.webp') no-repeat center center;
    background-size: cover;
    z-index: -1;
    will-change: transform;
}

/* Particle background effect */
body::before {
    content: '';
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-image:
        radial-gradient(1px 1px at 10% 20%, rgba(63, 147, 239, 0.3) 0%, transparent 100%),
        radial-gradient(1px 1px at 80% 30%, rgba(0, 93, 243, 0.2) 0%, transparent 100%),
        radial-gradient(1px 1px at 50% 70%, rgba(254, 228, 13, 0.12) 0%, transparent 100%),
        radial-gradient(1px 1px at 30% 90%, rgba(63, 147, 239, 0.15) 0%, transparent 100%),
        radial-gradient(1px 1px at 90% 80%, rgba(0, 93, 243, 0.2) 0%, transparent 100%);
    pointer-events: none;
    z-index: 0;
}

/* ===================== HEADER ===================== */
header {
    background: rgba(13, 17, 23, 0.85);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    padding: 12px 24px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    border-bottom: 1px solid var(--border-glass);
    position: sticky;
    top: 0;
    z-index: 100;
}

.header-left {
    display: flex;
    align-items: center;
    gap: 15px;
}

.header-left img {
    height: 42px;
    border-radius: 6px;
}

.header-left .divider {
    width: 1px;
    height: 24px;
    background: var(--border-glass);
}

.header-left .title {
    font-size: 15px;
    color: var(--text-secondary);
    font-weight: 500;
    letter-spacing: 0.5px;
}

.header-right .user-icon {
    font-size: 30px;
    color: var(--text-muted);
    cursor: pointer;
    transition: all 0.3s ease;
}

.header-right .user-icon:hover {
    color: var(--accent-cyan);
    text-shadow: 0 0 12px rgba(63, 147, 239, 0.5);
}

/* ===================== MAIN CONTENT ===================== */
.main-content {
    max-width: 960px;
    margin: 0 auto;
    padding: 30px 20px 60px;
    position: relative;
    z-index: 1;
}

/* ===================== HERO SECTION ===================== */
.hero-section {
    text-align: center;
    padding: 40px 20px 30px;
    position: relative;
    overflow: hidden;
}

.page-led {
    position: fixed;
    width: 300px;
    height: 100vh;
    object-fit: cover;
    object-position: center;
    opacity: 0.72;
    mix-blend-mode: screen;
    pointer-events: none;
    user-select: none;
    top: 0;
    z-index: 0;
    display: none;
}

.page-led-left {
    left: -40px;
    transform: scaleX(-1);
}

.page-led-right {
    right: -40px;
}

@media (min-width: 1200px) {
    .page-led { display: block; }
}

.brand-chevron-wrap {
    text-align: center;
    margin: -6px 0 20px;
    pointer-events: none;
    user-select: none;
}

.brand-chevron {
    width: 90px;
    opacity: 0.55;
    mix-blend-mode: screen;
}

.brand-puntos {
    position: absolute;
    right: -60px;
    top: 80px;
    width: 140px;
    opacity: 0.12;
    pointer-events: none;
    user-select: none;
    z-index: 0;
}

@media (max-width: 768px) {
    .brand-puntos { display: none; }
    .brand-chevron { width: 70px; }
}

.hero-section h1 {
    font-family: 'TacticSans', 'Montserrat', sans-serif;
    font-size: 2rem;
    font-weight: 900;
    background: linear-gradient(135deg, var(--accent-cyan), #7cb8f5, var(--accent-yellow));
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    margin-bottom: 10px;
}

.hero-section p {
    color: var(--text-secondary);
    font-size: 1rem;
    max-width: 500px;
    margin: 0 auto;
}

/* ===================== SECTION CONTAINER ===================== */
.section-container {
    margin-bottom: 35px;
}

.section-header {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 18px;
}

.section-number {
    background: linear-gradient(135deg, var(--accent-cyan), var(--accent-purple));
    color: var(--bg-primary);
    width: 28px;
    height: 28px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 6px;
    font-weight: 800;
    font-size: 14px;
}

.section-title {
    font-size: 1.15rem;
    font-weight: 700;
    color: var(--text-primary);
}

/* ===================== CARD LOGIN (ID Verification) ===================== */
.card-login {
    background: var(--bg-card);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border: 1px solid var(--border-glass);
    border-radius: 12px;
    padding: 24px;
    max-width: 520px;
    transition: border-color 0.3s;
}

.card-login:hover {
    border-color: rgba(63, 147, 239, 0.2);
}

.input-label {
    font-size: 14px;
    color: var(--text-secondary);
    margin-bottom: 10px;
    display: flex;
    align-items: center;
    gap: 6px;
}

.player-id-wrapper {
    display: flex;
    border: 1px solid var(--border-glass);
    border-radius: 8px;
    overflow: hidden;
    background: rgba(0, 0, 0, 0.3);
    transition: border-color 0.3s;
}

.player-id-wrapper:focus-within {
    border-color: var(--accent-cyan);
    box-shadow: 0 0 0 3px rgba(63, 147, 239, 0.1);
}

.player-id-wrapper input {
    flex: 1;
    border: none;
    padding: 14px 16px;
    font-size: 15px;
    outline: none;
    background: transparent;
    color: var(--text-primary);
}

.player-id-wrapper input::placeholder {
    color: var(--text-muted);
}

.player-id-wrapper .btn-login-small {
    background: linear-gradient(135deg, var(--accent-cyan), var(--accent-purple));
    color: var(--bg-primary);
    border: none;
    padding: 0 28px;
    font-weight: 700;
    font-size: 14px;
    cursor: pointer;
    transition: all 0.3s;
    letter-spacing: 0.5px;
}

.player-id-wrapper .btn-login-small:hover {
    filter: brightness(1.15);
}

/* Player verified status */
#player_verify_status {
    margin-top: 12px;
    font-size: 14px;
}

/* ===================== DIAMONDS GRID ===================== */
.diamonds-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
    gap: 14px;
}

.diamond-card {
    background: rgba(255, 255, 255, 0.10);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border: 1.5px solid rgba(255, 255, 255, 0.20);
    border-radius: 12px;
    padding: 20px 16px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    cursor: pointer;
    transition: all 0.3s ease;
    position: relative;
    overflow: hidden;
}

.diamond-card::before {
    content: '';
    position: absolute;
    top: -50%;
    left: -50%;
    width: 200%;
    height: 200%;
    background: radial-gradient(circle, rgba(63, 147, 239, 0.05) 0%, transparent 70%);
    opacity: 0;
    transition: opacity 0.3s;
    pointer-events: none;
}

.diamond-card:hover {
    border-color: rgba(63, 147, 239, 0.3);
    transform: translateY(-2px);
    box-shadow: var(--shadow-glow);
}

.diamond-card:hover::before {
    opacity: 1;
}

.diamond-card.selected {
    border-color: var(--accent-cyan);
    background: rgba(63, 147, 239, 0.08);
    box-shadow: var(--shadow-glow), inset 0 0 30px rgba(63, 147, 239, 0.05);
}

.diamond-card.selected::after {
    content: '\f00c';
    font-family: 'Font Awesome 6 Free';
    font-weight: 900;
    position: absolute;
    top: 8px;
    right: 10px;
    font-size: 11px;
    color: var(--bg-primary);
    background: var(--accent-cyan);
    width: 20px;
    height: 20px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    pointer-events: none;
}

.diamond-card svg,
.diamond-card .diamond-img {
    width: 32px;
    height: 32px;
    filter: drop-shadow(0 0 6px rgba(0, 212, 255, 0.4));
    transition: filter 0.3s;
    animation: diamondIdle 3s ease-in-out infinite;
}

.diamond-card .diamond-img {
    width: 64px;
    height: auto;
    object-fit: contain;
    pointer-events: none;
    user-select: none;
}

@keyframes diamondIdle {
    0%   { transform: translateY(0)    rotate(0deg)   scale(1);    filter: drop-shadow(0 0 6px  rgba(63,147,239,0.4)); }
    25%  { transform: translateY(-4px) rotate(8deg)   scale(1.08); filter: drop-shadow(0 0 10px rgba(63,147,239,0.7)); }
    50%  { transform: translateY(0)    rotate(0deg)   scale(1);    filter: drop-shadow(0 0 6px  rgba(63,147,239,0.4)); }
    75%  { transform: translateY(-4px) rotate(-8deg)  scale(1.08); filter: drop-shadow(0 0 10px rgba(63,147,239,0.7)); }
    100% { transform: translateY(0)    rotate(0deg)   scale(1);    filter: drop-shadow(0 0 6px  rgba(63,147,239,0.4)); }
}

.diamond-card:hover svg,
.diamond-card.selected svg,
.diamond-card:hover .diamond-img,
.diamond-card.selected .diamond-img {
    animation: diamondActive 0.6s ease-in-out infinite alternate;
    filter: drop-shadow(0 0 14px rgba(63, 147, 239, 0.9));
}

@keyframes diamondActive {
    from { transform: translateY(0)    rotate(-12deg) scale(1.1); }
    to   { transform: translateY(-6px) rotate(12deg)  scale(1.18); }
}

/* La caja de diamantes no se mueve: solo pulsa su luz azul */
.diamond-card .diamond-img,
.diamond-card:hover .diamond-img,
.diamond-card.selected .diamond-img {
    transform: none;
    animation: diamondGlow 2.6s ease-in-out infinite;
}

.diamond-card:hover .diamond-img,
.diamond-card.selected .diamond-img {
    animation: diamondGlow 1.3s ease-in-out infinite;
}

@keyframes diamondGlow {
    0%, 100% { filter: drop-shadow(0 0 3px rgba(63, 147, 239, 0.25)) brightness(1); }
    50%      { filter: drop-shadow(0 0 16px rgba(63, 147, 239, 0.85)) brightness(1.18); }
}

@media (prefers-reduced-motion: reduce) {
    .diamond-card .diamond-img,
    .diamond-card:hover .diamond-img,
    .diamond-card.selected .diamond-img {
        animation: none;
        filter: drop-shadow(0 0 8px rgba(63, 147, 239, 0.5));
    }
}

.diamond-val {
    font-size: 1.25rem;
    font-weight: 800;
    color: var(--text-primary);
}

.diamond-price {
    font-size: 0.85rem;
    color: var(--accent-cyan);
    font-weight: 600;
}

/* Loading state for diamonds grid */
.diamonds-loading {
    text-align: center;
    padding: 40px;
    color: var(--text-muted);
}

.diamonds-loading i {
    font-size: 24px;
    color: var(--accent-cyan);
    margin-bottom: 10px;
}

/* ===================== PAYMENT SECTION ===================== */
.payment-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 16px;
}

.payment-card {
    background: var(--bg-card);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border: 1.5px solid var(--border-glass);
    border-radius: 12px;
    padding: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    min-height: 80px;
    cursor: pointer;
    transition: all 0.3s ease;
}

.payment-card:hover {
    transform: translateY(-2px);
}

.payment-card.stripe-card:hover,
.payment-card.stripe-card.selected {
    border-color: var(--accent-purple);
    box-shadow: 0 0 20px rgba(0, 93, 243, 0.15);
    background: rgba(0, 93, 243, 0.08);
}

.payment-card.paypal-card:hover,
.payment-card.paypal-card.selected {
    border-color: var(--accent-yellow);
    box-shadow: 0 0 20px rgba(255, 196, 57, 0.15);
    background: rgba(255, 196, 57, 0.08);
}

.payment-card .payment-label {
    font-size: 16px;
    font-weight: 600;
    color: var(--text-primary);
}

.payment-card img {
    max-height: 30px;
}

/* ===================== PAYMENT BUTTONS ===================== */
.payment-actions {
    margin-top: 30px;
    display: flex;
    flex-direction: column;
    gap: 16px;
    max-width: 480px;
}

.btn-pay {
    width: 100%;
    padding: 16px 24px;
    border: none;
    border-radius: 10px;
    font-size: 16px;
    font-weight: 700;
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    letter-spacing: 0.3px;
}

.btn-pay:disabled {
    opacity: 0.4;
    cursor: not-allowed;
    transform: none !important;
}

.btn-stripe {
    background: linear-gradient(135deg, #005DF3, #3F93EF);
    color: #fff;
}

.btn-stripe:hover:not(:disabled) {
    transform: translateY(-2px);
    box-shadow: 0 8px 25px rgba(0, 93, 243, 0.35);
}

.btn-paypal {
    background: linear-gradient(135deg, #FEE40D, #e6cc00);
    color: #111;
}

.btn-paypal:hover:not(:disabled) {
    transform: translateY(-2px);
    box-shadow: 0 8px 25px rgba(255, 196, 57, 0.35);
}

/* PayPal button container */
#paypal-button-container {
    margin-top: 10px;
    max-width: 480px;
}

/* ===================== ORDER SUMMARY ===================== */
.order-summary {
    background: var(--bg-card);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border: 1px solid var(--border-glass);
    border-radius: 12px;
    padding: 20px 24px;
    margin-top: 30px;
    max-width: 480px;
    display: none;
}

.order-summary.visible {
    display: block;
}

.order-summary h3 {
    font-size: 1rem;
    color: var(--accent-cyan);
    margin-bottom: 14px;
    font-weight: 700;
}

.order-row {
    display: flex;
    justify-content: space-between;
    padding: 8px 0;
    border-bottom: 1px solid var(--border-glass);
    font-size: 14px;
}

.order-row:last-child {
    border-bottom: none;
    font-weight: 700;
    font-size: 16px;
    color: var(--accent-cyan);
    padding-top: 12px;
}

.order-row span:first-child {
    color: var(--text-secondary);
}

/* ===================== LOGIN POPUP ===================== */
.login-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.8);
    backdrop-filter: blur(6px);
    display: none;
    justify-content: center;
    align-items: center;
    z-index: 9999;
}

.login-popup {
    background: linear-gradient(145deg, #111827, #0f172a);
    border: 1px solid var(--border-glass);
    width: 100%;
    max-width: 400px;
    border-radius: 16px;
    padding: 32px;
    position: relative;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);
    margin: 20px;
}

.login-popup .close {
    position: absolute;
    top: 16px;
    right: 18px;
    font-size: 22px;
    color: var(--text-muted);
    cursor: pointer;
    transition: color 0.3s;
    line-height: 1;
}

.login-popup .close:hover {
    color: var(--accent-red);
}

.login-popup h2 {
    text-align: center;
    font-size: 1.3rem;
    margin-bottom: 24px;
    color: var(--accent-cyan);
    font-weight: 700;
}

.form-group {
    margin-bottom: 18px;
}

.form-group label {
    display: block;
    margin-bottom: 8px;
    font-size: 13px;
    color: var(--text-secondary);
    font-weight: 500;
}

.form-group input {
    width: 100%;
    padding: 12px 14px;
    border: 1px solid var(--border-glass);
    border-radius: 8px;
    font-size: 14px;
    box-sizing: border-box;
    background: rgba(0, 0, 0, 0.3);
    color: var(--text-primary);
    outline: none;
    transition: border-color 0.3s;
}

.form-group input:focus {
    border-color: var(--accent-cyan);
    box-shadow: 0 0 0 3px rgba(63, 147, 239, 0.1);
}

.form-group input::placeholder {
    color: var(--text-muted);
}

.btn-submit-login {
    width: 100%;
    background: linear-gradient(135deg, var(--accent-red), #c41e15);
    color: white;
    border: none;
    padding: 14px;
    font-size: 15px;
    font-weight: 700;
    border-radius: 8px;
    cursor: pointer;
    margin-top: 8px;
    transition: all 0.3s;
    letter-spacing: 0.5px;
}

.btn-submit-login:hover {
    transform: translateY(-1px);
    box-shadow: 0 6px 20px rgba(225, 37, 27, 0.3);
}

.login-popup .register-link {
    text-align: center;
    border-top: 1px solid var(--border-glass);
    margin-top: 22px;
    padding-top: 16px;
    font-size: 13px;
}

.login-popup .register-link a {
    color: var(--text-muted);
    text-decoration: none;
}

.login-popup .register-link a span {
    color: var(--accent-cyan);
    font-weight: 600;
}

.login-popup .register-link a:hover span {
    text-decoration: underline;
}

/* ===================== SECTION LOCKED ===================== */
.section-locked {
    opacity: 0.35;
    pointer-events: none;
    user-select: none;
    filter: grayscale(0.4);
    transition: opacity 0.4s, filter 0.4s;
}

/* ===================== HIDDEN ===================== */
.hidden {
    display: none !important;
}

/* ===================== RESPONSIVE ===================== */
@media (max-width: 768px) {
    .hero-section h1 {
        font-size: 1.5rem;
    }

    .hero-section p {
        font-size: 0.9rem;
    }

    .diamonds-grid {
        grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
        gap: 10px;
    }

    .diamond-card {
        padding: 16px 12px;
    }

    .diamond-card .diamond-img {
        width: 54px;
    }

    .diamond-val {
        font-size: 1.1rem;
    }

    .payment-grid {
        grid-template-columns: 1fr;
    }

    .main-content {
        padding: 20px 16px 40px;
    }

    header {
        padding: 10px 16px;
    }

    .header-left .title {
        font-size: 13px;
    }

    .player-id-wrapper .btn-login-small {
        padding: 0 14px;
        font-size: 13px;
    }

    .step-dot {
        padding: 6px 8px;
        font-size: 12px;
        white-space: nowrap;
    }
}

@media (max-width: 400px) {
    .diamonds-grid {
        grid-template-columns: repeat(2, 1fr);
    }

    .player-id-wrapper input {
        flex: 1 1 0;
        min-width: 0;
        font-size: 13px;
        padding: 12px 10px;
    }

    .player-id-wrapper .btn-login-small {
        flex-shrink: 0;
        padding: 0 12px;
        font-size: 12px;
    }
}

/* ===================== STEP INDICATOR ===================== */
.steps-indicator {
    display: flex;
    justify-content: center;
    gap: 8px;
    margin-bottom: 30px;
}

.step-dot {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 6px 14px;
    border-radius: 20px;
    font-size: 12px;
    font-weight: 600;
    color: var(--text-muted);
    background: var(--bg-card);
    border: 1px solid var(--border-glass);
    transition: all 0.3s;
}

.step-dot.active {
    color: var(--accent-cyan);
    border-color: var(--accent-cyan);
    background: rgba(63, 147, 239, 0.08);
}

.step-dot.completed {
    color: #22c55e;
    border-color: #22c55e;
    background: rgba(34, 197, 94, 0.08);
}

.step-connector {
    width: 30px;
    height: 1px;
    background: var(--border-glass);
    align-self: center;
}

/* ===================== ANIMATIONS ===================== */
@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(15px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.section-container {
    animation: fadeInUp 0.5s ease both;
}

.section-container:nth-child(2) {
    animation-delay: 0.1s;
}

.section-container:nth-child(3) {
    animation-delay: 0.2s;
}


/* ==================================================================
   Estilos que en la tienda anterior iban incrustados en la portada.
   Aqui viven en el CSS de la plantilla, que si se puede cachear.
   ================================================================== */
/* ─── Banner Carrusel ──────────────────────────────── */
        .bn-carousel{
            position:sticky;
            top:var(--header-h, 64px);
            z-index:90;
            margin:-30px -20px 6px;
            padding:14px 20px 4px;
        }
        @media(max-width:599px){
            .bn-carousel{ margin:-20px -16px 6px; padding:14px 16px 4px; }
        }
        .bn-carousel::before{
            content:'';
            position:absolute;
            top:0; bottom:0;
            left:50%; transform:translateX(-50%);
            width:100vw;
            background:rgba(2,6,23,0.30);
            backdrop-filter:blur(14px);
            -webkit-backdrop-filter:blur(14px);
            z-index:-1;
        }
        .bn-carousel::after{
            content:'';
            position:absolute;
            bottom:-28px; left:50%; transform:translateX(-50%);
            width:100vw; height:28px;
            background:linear-gradient(to bottom, rgba(2,6,23,0.30) 0%, transparent 100%);
            pointer-events:none;
            z-index:89;
        }
        .bn-track{
            display:flex; gap:12px; overflow-x:auto; scroll-snap-type:x mandatory;
            -webkit-overflow-scrolling:touch; scrollbar-width:none; padding:0 4px 6px;
        }
        .bn-track::-webkit-scrollbar{ display:none; }
        .bn-slide{
            flex:0 0 80%; max-width:420px; min-width:260px;
            scroll-snap-align:center; border-radius:16px; overflow:hidden;
            position:relative; cursor:pointer; transition:transform .2s;
            border:1px solid rgba(148,163,184,0.2);
        }
        .bn-slide:hover{ transform:scale(1.02); }
        .bn-slide img{ width:100%; height:175px; object-fit:cover; display:block; }
        .bn-slide-gen{
            width:100%; height:175px; display:flex; flex-direction:column;
            align-items:center; justify-content:center; padding:20px; text-align:center;
            position:relative; overflow:hidden;
        }
        .bn-slide-gen::before{
            content:''; position:absolute; inset:0;
            background:url('/templates/ferchito/img/fondo_ff.jpg') center/cover no-repeat; opacity:.15;
        }
        .bn-slide-gen .bn-t{
            position:relative; font-size:clamp(16px,4vw,22px); font-weight:900; color:#fff;
            text-shadow:0 2px 12px rgba(0,0,0,0.6); line-height:1.2; margin-bottom:4px;
        }
        .bn-slide-gen .bn-d{
            position:relative; font-size:clamp(11px,2.5vw,13px); color:rgba(255,255,255,0.85);
            text-shadow:0 1px 6px rgba(0,0,0,0.4);
        }
        .bn-dots{
            display:flex; justify-content:center; gap:6px; margin-top:8px;
        }
        .bn-dot{
            width:8px; height:8px; border-radius:50%;
            background:rgba(148,163,184,0.3); transition:all .2s;
        }
        .bn-dot.active{ background:#3F93EF; width:20px; border-radius:4px; }
        @media(min-width:600px){ .bn-slide{ flex:0 0 48%; } }
        @media(min-width:900px){ .bn-slide{ flex:0 0 36%; } }
        .qty-ctrl{display:flex;align-items:center;gap:8px;margin-top:4px}
        .qty-btn{
            width:26px;height:26px;border-radius:50%;
            border:1px solid var(--border-glass);
            background:rgba(255,255,255,0.08);
            color:var(--text-primary);font-size:16px;
            cursor:pointer;display:flex;align-items:center;justify-content:center;
            transition:background .2s,border-color .2s;
            padding:0;line-height:1;
        }
        .qty-btn:hover{background:rgba(63,147,239,0.2);border-color:var(--accent-cyan)}
        .qty-val{min-width:22px;text-align:center;font-weight:700;font-size:14px;color:var(--text-primary)}

        /* Checkbox aceptación legal */
        .accept-terms-label{
            display:flex;
            align-items:flex-start;
            gap:10px;
            margin-top:16px;
            cursor:pointer;
            font-size:13px;
            color:#93b4f0;
            line-height:1.5;
        }
        .accept-terms-label input[type="checkbox"]{
            appearance:none;
            -webkit-appearance:none;
            width:18px;height:18px;
            min-width:18px;
            border:2px solid rgba(63,147,239,0.5);
            border-radius:5px;
            background:rgba(255,255,255,0.05);
            cursor:pointer;
            margin-top:2px;
            transition:background .15s,border-color .15s;
        }
        .accept-terms-label input[type="checkbox"]:checked{
            background:#005DF3;
            border-color:#005DF3;
            background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 12 10' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 5l3.5 3.5L11 1' stroke='white' stroke-width='2' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
            background-repeat:no-repeat;
            background-position:center;
            background-size:10px;
        }
        .accept-terms-label a{
            color:#3F93EF;
            text-decoration:underline;
        }
        .accept-terms-label a:hover{
            color:#7cb8f5;
        }

        /* Aviso no reembolsable */
        .no-refund-notice{
            display:flex;
            align-items:flex-start;
            gap:12px;
            background:rgba(234,179,8,0.08);
            border:1px solid rgba(234,179,8,0.35);
            border-left:4px solid #eab308;
            border-radius:12px;
            padding:14px 16px;
            margin-top:20px;
            margin-bottom:14px;
            font-size:13px;
            color:#fef3c7;
            line-height:1.5;
        }
        .no-refund-notice i{
            color:#eab308;
            font-size:18px;
            margin-top:2px;
            flex-shrink:0;
        }
        .no-refund-notice .notice-title{
            display:block;
            margin-bottom:6px;
            color:#fde047;
            font-size:13px;
        }
        .no-refund-notice p{
            margin:0 0 4px 0;
        }
        .no-refund-notice p:last-child{
            margin-bottom:0;
        }

        /* ─── FF Diamond Loader ─────────────────────────────── */
        .ff-loader{position:relative;display:flex;align-items:center;justify-content:center;gap:6px;margin-bottom:8px}
        .ff-loader-glow{
            position:absolute;width:80px;height:80px;border-radius:50%;
            background:radial-gradient(circle,rgba(63,147,239,0.35) 0%,transparent 70%);
            animation:glowPulse 1.6s ease-in-out infinite;
        }
        @keyframes glowPulse{
            0%,100%{transform:scale(0.8);opacity:0.5}
            50%{transform:scale(1.3);opacity:1}
        }
        .ff-loader-diamond{
            width:54px;height:54px;
            animation:diamondFloat 1.6s ease-in-out infinite, diamondSpin 3s linear infinite;
            filter:drop-shadow(0 0 10px rgba(63,147,239,0.8));
            position:relative;z-index:1;
        }
        @keyframes diamondFloat{
            0%,100%{transform:translateY(0) rotate(0deg)}
            50%{transform:translateY(-8px) rotate(0deg)}
        }
        @keyframes diamondSpin{
            0%{filter:drop-shadow(0 0 8px rgba(63,147,239,0.8))}
            50%{filter:drop-shadow(0 0 18px rgba(254,228,13,0.9))}
            100%{filter:drop-shadow(0 0 8px rgba(63,147,239,0.8))}
        }
        .ff-loader-dot{
            width:6px;height:6px;border-radius:50%;
            background:#3F93EF;position:absolute;bottom:-18px;
            animation:dotBounce 1.2s ease-in-out infinite;
        }
        .ff-loader-dot:nth-child(2){left:calc(50% - 14px);animation-delay:0s}
        .ff-loader-dot:nth-child(3){left:calc(50%);animation-delay:.2s}
        .ff-loader-dot:nth-child(4){left:calc(50% + 14px);animation-delay:.4s}
        @keyframes dotBounce{
            0%,100%{transform:translateY(0);opacity:0.3}
            50%{transform:translateY(-5px);opacity:1}
        }
        .ff-loader-text{
            font-size:13px;color:var(--accent-cyan);font-weight:600;
            margin-top:28px;letter-spacing:.04em;
            animation:textPulse 1.6s ease-in-out infinite;
        }
        @keyframes textPulse{
            0%,100%{opacity:0.5}50%{opacity:1}
        }

        /* ─── Input shake ───────────────────────────────────── */
        @keyframes inputShake{
            0%,100%{transform:translateX(0)}
            20%{transform:translateX(-6px)}
            40%{transform:translateX(6px)}
            60%{transform:translateX(-4px)}
            80%{transform:translateX(4px)}
        }
        .input-shake{animation:inputShake .4s ease;border-color:#ef4444 !important;box-shadow:0 0 0 3px rgba(239,68,68,0.25) !important;}

        /* ─── Promo Price Animation ─────────────────────────── */
        @keyframes promoReveal{
            from{opacity:0;transform:scale(0.75) translateY(6px)}
            to{opacity:1;transform:scale(1) translateY(0)}
        }
        @keyframes strikeSlide{
            from{width:0}to{width:100%}
        }
        .price-promo-wrap{display:flex;flex-direction:column;align-items:center;gap:2px}
        .price-original{
            font-size:11px;color:var(--text-muted);font-weight:600;
            position:relative;display:inline-block;white-space:nowrap;
        }
        .price-original::after{
            content:'';position:absolute;left:0;top:50%;height:1.5px;
            background:var(--text-muted);border-radius:2px;
            width:0;animation:strikeSlide .3s .15s ease forwards;
        }
        .price-new{
            font-size:0.85rem;font-weight:800;color:#10b981;
            animation:promoReveal .35s ease forwards;white-space:nowrap;
        }

        /* ─── Promo Skeleton ────────────────────────────────── */
        .promo-skeleton{
            border-radius:14px;padding:14px 16px;margin:16px 0;
            background:rgba(255,255,255,0.04);
            border:1px solid rgba(255,255,255,0.07);
            overflow:hidden;position:relative;
        }
        .promo-skeleton::after{
            content:'';position:absolute;inset:0;
            background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,0.06) 50%,transparent 100%);
            animation:shimmer 1.6s ease-in-out infinite;
            transform:translateX(-100%);
        }
        @keyframes shimmer{
            0%{transform:translateX(-100%)}
            100%{transform:translateX(100%)}
        }
        .sk-line{border-radius:6px;background:rgba(255,255,255,0.08);}

        /* ─── Promo Banner ──────────────────────────────────── */
        .promo-banner{
            display:none;
            background:linear-gradient(135deg,rgba(16,185,129,0.15) 0%,rgba(5,150,105,0.08) 100%);
            border:1px solid rgba(16,185,129,0.4);
            border-left:4px solid #10b981;
            border-radius:14px;
            padding:14px 16px;
            margin:16px 0;
            animation:promoPulse 2.5s ease-in-out infinite;
        }
        @keyframes promoPulse{
            0%,100%{box-shadow:0 0 0 0 rgba(16,185,129,0)}
            50%{box-shadow:0 0 0 6px rgba(16,185,129,0.12)}
        }
        .promo-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:space-between}
        .promo-label{display:flex;align-items:center;gap:8px;flex:1;min-width:0}
        .promo-icon{font-size:20px;flex-shrink:0}
        .promo-texts{min-width:0}
        .promo-title{font-size:13px;font-weight:700;color:#6ee7b7;line-height:1.3}
        .promo-subtitle{font-size:12px;color:rgba(110,231,183,0.7);margin-top:1px}
        .promo-code-wrap{display:flex;align-items:center;gap:8px;flex-shrink:0}
        .promo-code{
            font-family:monospace;font-size:14px;font-weight:800;
            color:#ecfdf5;background:rgba(16,185,129,0.2);
            border:1px dashed rgba(16,185,129,0.6);
            border-radius:8px;padding:5px 12px;letter-spacing:1px;
            white-space:nowrap;
        }
        .promo-copy-btn{
            background:rgba(16,185,129,0.25);border:1px solid rgba(16,185,129,0.5);
            color:#6ee7b7;border-radius:8px;padding:5px 10px;
            font-size:12px;cursor:pointer;transition:background .2s,color .2s;
            white-space:nowrap;display:flex;align-items:center;gap:5px;
        }
        .promo-copy-btn:hover{background:rgba(16,185,129,0.4);color:#ecfdf5}
        .promo-copy-btn.copied{background:rgba(16,185,129,0.5);color:#ecfdf5}
        .promo-bar-wrap{margin-top:10px}
        .promo-bar-info{display:flex;justify-content:space-between;font-size:11px;color:rgba(110,231,183,0.65);margin-bottom:5px}
        .promo-bar-track{height:6px;background:rgba(255,255,255,0.08);border-radius:99px;overflow:hidden}
        .promo-bar-fill{height:100%;border-radius:99px;background:linear-gradient(90deg,#10b981,#34d399);transition:width .6s ease}
        @media(max-width:420px){
            .promo-top{flex-direction:column;align-items:flex-start}
            .promo-code-wrap{width:100%;justify-content:space-between}
            .promo-code{flex:1;text-align:center}
            .promo-copy-btn{flex-shrink:0}
        }

        /* ─── Reviews Section ───────────────────────────────── */
        .reviews-section{margin-top:30px}
        .reviews-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;flex-wrap:wrap;gap:8px}
        .reviews-header h2{font-size:15px;font-weight:700;color:var(--text-primary);display:flex;align-items:center;gap:8px}
        .reviews-header h2 i{color:#fbbf24}
        .reviews-badge{background:rgba(251,191,36,0.12);border:1px solid rgba(251,191,36,0.3);border-radius:20px;padding:4px 12px;font-size:12px;font-weight:600;color:#fbbf24;white-space:nowrap}
        .reviews-grid{display:flex;gap:12px;overflow-x:auto;padding-bottom:8px;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,0.1) transparent;-webkit-overflow-scrolling:touch}
        .reviews-grid::-webkit-scrollbar{height:4px}
        .reviews-grid::-webkit-scrollbar-thumb{background:rgba(255,255,255,0.15);border-radius:2px}
        .review-card{background:var(--bg-card);border:1px solid var(--border-glass);border-radius:14px;padding:14px;min-width:158px;max-width:158px;flex-shrink:0;transition:border-color .2s,background .2s}
        .review-card:hover{background:var(--bg-card-hover);border-color:rgba(251,191,36,0.35)}
        .review-nick{font-size:13px;font-weight:700;color:var(--text-primary);margin-bottom:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
        .review-stars{color:#fbbf24;font-size:12px;letter-spacing:1px;margin-bottom:5px}
        .review-diamonds{font-size:11px;color:var(--accent-cyan);font-weight:600;margin-bottom:8px}
        .review-comment{font-size:12px;color:var(--text-secondary);line-height:1.4;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden;min-height:42px;margin-bottom:8px}
        .review-date{font-size:10px;color:var(--text-muted)}
        .reviews-empty{font-size:13px;color:var(--text-muted);text-align:center;padding:20px;width:100%}

        /* ─── Review Modal ───────────────────────────────────── */
        .review-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.72);backdrop-filter:blur(6px);z-index:200;align-items:center;justify-content:center;padding:20px}
        .review-overlay.active{display:flex}
        .review-popup{background:var(--bg-secondary);border:1px solid var(--border-glass);border-radius:20px;padding:28px 24px;max-width:360px;width:100%;text-align:center;animation:slideUpModal .3s ease}
        @keyframes slideUpModal{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}
        .review-popup-icon{font-size:34px;margin-bottom:8px}
        .review-popup h3{font-size:18px;font-weight:800;color:var(--text-primary);margin-bottom:6px}
        .review-subtitle{font-size:13px;color:var(--text-secondary);margin-bottom:20px;line-height:1.5}
        .stars-selector{display:flex;justify-content:center;gap:8px;margin-bottom:20px}
        .stars-selector i{font-size:30px;color:rgba(255,255,255,0.18);cursor:pointer;transition:color .12s,transform .12s}
        .stars-selector i:hover,.stars-selector i.active{color:#fbbf24;transform:scale(1.15)}
        #review_comentario{width:100%;background:rgba(255,255,255,0.05);border:1px solid var(--border-glass);border-radius:10px;padding:10px 12px;color:var(--text-primary);font-size:13px;font-family:inherit;resize:none;height:78px;margin-bottom:16px;transition:border-color .2s}
        #review_comentario:focus{outline:none;border-color:var(--border-glow)}
        #review_comentario::placeholder{color:var(--text-muted)}
        .review-actions{display:flex;gap:10px}
        .btn-review-submit{flex:1;background:linear-gradient(135deg,#fbbf24,#f59e0b);color:#000;border:none;border-radius:10px;padding:12px;font-weight:700;font-size:14px;cursor:pointer;transition:opacity .2s}
        .btn-review-submit:hover{opacity:.85}
        .btn-review-submit:disabled{opacity:.35;cursor:not-allowed}
        .btn-review-skip{background:rgba(255,255,255,0.07);border:1px solid var(--border-glass);color:var(--text-muted);border-radius:10px;padding:12px 16px;font-size:13px;cursor:pointer;transition:background .2s}
        .btn-review-skip:hover{background:rgba(255,255,255,0.12)}

        /* ─── Tarjeta sin stock ──────────────────────────────── */
        .diamond-card.out-of-stock{
            opacity:.45;
            pointer-events:none;
            cursor:not-allowed;
            position:relative;
            overflow:hidden;
        }
        .diamond-card.out-of-stock::after{
            content:'Sin stock';
            position:absolute;
            top:18px;right:-26px;
            background:#e63b3b;
            color:#fff;
            font-size:10px;font-weight:800;
            letter-spacing:.5px;
            padding:4px 34px;
            transform:rotate(45deg);
            white-space:nowrap;
            box-shadow:0 2px 6px rgba(0,0,0,.4);
        }
.bn-expand-hint{
            position:absolute;bottom:8px;right:10px;
            background:rgba(0,0,0,0.45);color:#fff;
            border-radius:8px;padding:4px 8px;font-size:12px;
            opacity:0;transition:opacity .2s;pointer-events:none;
        }
        .bn-expandable:hover .bn-expand-hint{ opacity:1; }
        @keyframes bnLbIn{
            from{opacity:0;transform:scale(.93)}
            to{opacity:1;transform:scale(1)}
        }

/* ==================================================================
   Piezas propias de esta versión.

   La tienda anterior las resolvía con SweetAlert2 y con estilos en
   línea; aquí los avisos van en la propia página, que en el móvil no
   tapa el formulario y no obliga a cargar otra librería.
   ================================================================== */

/* Aviso de regiones, bajo la cabecera */
.tira-regiones {
  background: #1e3a5f;
  border-bottom: 1px solid rgba(59, 130, 246, .4);
  color: #93c5fd;
  font-size: 12.5px;
  text-align: center;
  padding: 7px 16px;
  letter-spacing: .2px;
}
.tira-regiones i { margin-right: 6px; color: #3b82f6; }
.tira-regiones strong { color: #dbeafe; }

/* Resultado de escribir el ID */
#player_verify_status {
  margin-top: 12px;
  font-weight: 600;
  font-size: 13.5px;
  min-height: 18px;
}
#player_verify_status.verify-bien { color: #4ade80; }
#player_verify_status.verify-mal  { color: #f87171; }

/* El campo se sacude al pulsar algo bloqueado: dice dónde hay que
   escribir sin necesidad de un mensaje más. */
@keyframes ferchito-shake {
  0%, 100% { transform: translateX(0); }
  20%, 60% { transform: translateX(-6px); }
  40%, 80% { transform: translateX(6px); }
}
#pid_input.shake {
  animation: ferchito-shake .4s;
  border-color: #f87171 !important;
}
@media (prefers-reduced-motion: reduce) {
  #pid_input.shake { animation: none; }
}

/* Fallo al iniciar el pago */
.pago-aviso {
  display: none;
  margin-top: 14px;
  padding: 12px 14px;
  border-radius: 10px;
  background: rgba(248, 113, 113, .12);
  border: 1px solid rgba(248, 113, 113, .35);
  color: #fca5a5;
  font-size: 13.5px;
  line-height: 1.5;
}
.pago-aviso.visible { display: block; }

.sin-paquetes {
  grid-column: 1 / -1;
  text-align: center;
  color: var(--text-muted);
  padding: 30px 0;
}

/* Reseñas */
.reviews-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 14px;
}
.review-card {
  background: var(--bg-card);
  border: 1px solid var(--border-glass);
  border-radius: 12px;
  padding: 16px;
}
.review-stars { color: #fbbf24; font-size: 13px; margin-bottom: 8px; }
.review-text {
  color: var(--text-secondary);
  font-size: 13.5px;
  line-height: 1.55;
  margin-bottom: 12px;
}
.review-meta {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 10px;
  font-size: 12px;
  color: var(--text-muted);
}
.review-meta strong { color: var(--text-primary); font-weight: 600; }

/* Pie */
.pie-legal {
  margin-top: 40px;
  padding: 24px 20px;
  border-top: 1px solid rgba(255, 255, 255, .07);
  text-align: center;
  font-size: 12px;
  color: #6b7280;
}
.pie-logo { margin-bottom: 16px; }
.pie-logo img { height: 64px; border-radius: 8px; }
.pie-razon { margin-bottom: 10px; color: #9ca3af; }
.pie-enlaces {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 16px;
}
.pie-enlaces a { color: var(--accent-cyan); text-decoration: none; }
.pie-enlaces a:hover { text-decoration: underline; }
.pie-enlaces span { color: #374151; }
.pie-enlaces .pie-wa { color: #25d366; }
.pie-divisa { margin-top: 18px; }

/* Acceso de revendedores */
.login-overlay {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 200;
  background: rgba(0, 0, 0, .75);
  backdrop-filter: blur(4px);
  padding: 20px;
  align-items: center;
  justify-content: center;
}
.login-overlay.visible { display: flex; }
.login-popup {
  position: relative;
  width: 100%;
  max-width: 380px;
  background: var(--bg-secondary);
  border: 1px solid var(--border-glass);
  border-radius: 16px;
  padding: 28px 24px;
  text-align: center;
}
.login-popup h3 { color: var(--text-primary); margin-bottom: 8px; }
.login-popup p { color: var(--text-secondary); font-size: 13.5px; margin-bottom: 18px; }
.login-close {
  position: absolute;
  top: 10px; right: 14px;
  background: none;
  border: none;
  color: var(--text-muted);
  font-size: 26px;
  line-height: 1;
  cursor: pointer;
}

/* Imagen del proveedor: es un banner de 1,6:1 con arte y texto, no un icono.
   Ocupa el ancho de la tarjeta, se sale del padding y no flota: la animacion
   de diamante sobre una ilustracion queda mal. */
.diamond-card .diamond-img.es-banner {
    width: calc(100% + 32px);
    height: auto;
    margin: -20px -16px 2px;
    border-radius: 12px 12px 0 0;
    animation: none;
    filter: none;
    object-fit: cover;
    aspect-ratio: 16 / 10;
}
.diamond-card:hover .diamond-img.es-banner,
.diamond-card.selected .diamond-img.es-banner {
    filter: brightness(1.08);
}
