html {
  font-size: 14px;
}

@media (min-width: 768px) {
  html {
    font-size: 16px;
  }
}

.btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus {
  box-shadow: 0 0 0 0.1rem white, 0 0 0 0.25rem #258cfb;
}

html {
  position: relative;
  min-height: 100%;
}

body {
  margin-bottom: 60px;
}

.form-floating > .form-control-plaintext::placeholder, .form-floating > .form-control::placeholder {
  color: var(--bs-secondary-color);
  text-align: end;
}

.form-floating > .form-control-plaintext:focus::placeholder, .form-floating > .form-control:focus::placeholder {
  text-align: start;
}

.cr-digital-card {
    position: relative;
    border-radius: 32px;
    overflow: hidden;
    box-shadow: 0 20px 50px rgba(0,0,0,.18);
    animation: cardEnter .6s ease;
}

.cr-watermark {
    position: absolute;
    right: -35px;
    bottom: -20px;
    width: 180px;
    opacity: .06;
    pointer-events: none;
}

.cr-card .bg-white {
    box-shadow: 0 8px 20px rgba(0,0,0,.18);
}

.qr-container {
    border-radius: 24px;
    box-shadow: 0 10px 25px rgba(0,0,0,.20), inset 0 0 0 1px rgba(255,255,255,.6);
    transition: .25s;
}

    .qr-container:hover {
        transform: scale(1.03);
    }

.club-status-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 8px 18px;
    border-radius: 50px;
    background: rgba(255,255,255,.16);
    border: 1px solid rgba(255,255,255,.18);
    backdrop-filter: blur(8px);
    font-size: .9rem;
    font-weight: 600;
}

@keyframes cardEnter {
    from {
        opacity: 0;
        transform: translateY(20px);
    }

    to {
        opacity: 1;
        transform: none;
    }
}

.notification-card {
    border-left: 5px solid transparent;
}

.notification-actividad {
    border-left-color: #0d6efd;
}

.notification-premio {
    border-left-color: #ffc107;
}

.notification-logro {
    border-left-color: #6f42c1;
}

.notification-nivel {
    border-left-color: #198754;
}

.notification-promocion {
    border-left-color: #fd7e14;
}

.notification-sistema {
    border-left-color: #6c757d;
}

.notification-general {
    border-left-color: #adb5bd;
}

.dashboard-hero-mini {
    background: rgba(255,255,255,.16);
    border: 1px solid rgba(255,255,255,.20);
    border-radius: 20px;
    padding: 18px;
    backdrop-filter: blur(8px);
}

.dashboard-alert-card {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 18px;
    border-radius: 20px;
    background: white;
    box-shadow: 0 8px 30px rgba(0,0,0,.06);
    transition: .25s;
}

    .dashboard-alert-card:hover {
        transform: translateY(-4px);
        box-shadow: 0 14px 36px rgba(0,0,0,.12);
    }

.dashboard-alert-icon {
    width: 58px;
    height: 58px;
    border-radius: 16px;
    display: flex;
    justify-content: center;
    align-items: center;
    background: #f5f7fb;
    font-size: 28px;
}

.dashboard-alert-value {
    font-size: 28px;
    font-weight: 700;
}

.dashboard-alert-title {
    color: #6c757d;
    font-size: .9rem;
}

.dashboard-chart {
    height: 280px;
}

    .dashboard-chart canvas {
        max-height: 280px;
    }

.dashboard-ranking-item {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 14px 0;
    border-bottom: 1px solid #edf0f5;
}

    .dashboard-ranking-item:last-child {
        border-bottom: none;
    }

.dashboard-ranking-avatar {
    width: 44px;
    height: 44px;
    border-radius: 14px;
    background: linear-gradient(135deg, var(--club-primary), var(--club-secondary));
    color: white;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 800;
}

.dashboard-ranking-points {
    padding: 6px 12px;
    border-radius: 999px;
    background: #f5f7fb;
    font-weight: 700;
    white-space: nowrap;
}

/* ---------- Timeline ---------- */

.cr-timeline-item {
    display: flex;
    gap: 18px;
    position: relative;
    padding-bottom: 24px;
}

    .cr-timeline-item:last-child {
        padding-bottom: 0;
    }

    .cr-timeline-item:not(:last-child)::before {
        content: "";
        position: absolute;
        left: 23px;
        top: 54px;
        width: 2px;
        bottom: 0;
        background: #edf0f5;
    }

.cr-timeline-dot {
    width: 48px;
    height: 48px;
    min-width: 48px;
    border-radius: 16px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #f6f8fc;
    font-size: 24px;
}

.cr-timeline-content {
    flex: 1;
    background: white;
    border-radius: 18px;
    padding: 18px;
    box-shadow: 0 6px 22px rgba(0,0,0,.05);
    transition: .25s;
}

    .cr-timeline-content:hover {
        transform: translateY(-2px);
        box-shadow: 0 12px 28px rgba(0,0,0,.10);
    }

.cr-timeline-time {
    color: #98a2b3;
    font-size: .82rem;
    white-space: nowrap;
}

.digital-card-shell {
    border-radius: 28px;
}

@media (max-width: 576px) {
    .cr-content {
        padding-left: 12px;
        padding-right: 12px;
    }

    .digital-card-shell {
        border-radius: 26px;
        margin-top: 8px !important;
    }

        .digital-card-shell .card-body {
            padding: 22px !important;
        }

        .digital-card-shell img[style*="max-width:160px"] {
            max-width: 135px !important;
        }

        .digital-card-shell .display-4,
        .digital-card-shell .display-5 {
            font-size: 2.6rem !important;
        }

        .digital-card-shell h2 {
            font-size: 1.45rem !important;
        }

        .digital-card-shell .progress {
            height: 9px !important;
        }
}

@media (max-width: 576px) {
    .digital-card-footer {
        margin-bottom: 28px;
    }
}

.wallet-actions-icon {
    width: 52px;
    height: 52px;
    border-radius: 16px;
    background: linear-gradient(135deg, var(--club-primary), var(--club-secondary));
    color: white;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 26px;
}

.wallet-actions-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 10px;
}

.wallet-action-btn {
    border: 1px solid #edf0f5;
    background: #fff;
    border-radius: 16px;
    padding: 14px;
    text-decoration: none;
    color: #111827;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    font-weight: 700;
    transition: .2s;
}

    .wallet-action-btn:hover {
        transform: translateY(-2px);
        box-shadow: var(--cr-shadow-md);
        color: #111827;
    }

    .wallet-action-btn.disabled {
        opacity: .45;
        cursor: not-allowed;
    }

@media (min-width: 768px) {
    .wallet-actions-grid {
        grid-template-columns: repeat(3, 1fr);
    }
}

.google-wallet-preview {
    max-width: 390px;
    background: white;
    border-radius: 28px;
    box-shadow: var(--cr-shadow-lg);
    overflow: hidden;
}

.google-wallet-header {
    padding: 22px;
    display: flex;
    gap: 14px;
    align-items: center;
    border-bottom: 1px solid #edf0f5;
}

    .google-wallet-header img {
        width: 52px;
        height: 52px;
        object-fit: contain;
    }

    .google-wallet-header h4 {
        margin: 0;
        font-weight: 800;
    }

.google-wallet-body {
    padding: 28px;
    text-align: center;
}

.google-wallet-status {
    display: inline-block;
    padding: 7px 14px;
    border-radius: 999px;
    background: #f5f7fb;
    font-weight: 700;
    margin-bottom: 18px;
}

.google-wallet-points {
    margin: 28px 0;
}

    .google-wallet-points div {
        font-size: 64px;
        font-weight: 900;
        line-height: 1;
        color: var(--club-primary);
    }

    .google-wallet-points span {
        color: #667085;
        font-weight: 700;
    }

.google-wallet-reward {
    background: #f8fafc;
    border-radius: 18px;
    padding: 16px;
    font-weight: 800;
    margin-bottom: 22px;
}

    .google-wallet-reward span {
        color: #667085;
        font-size: .9rem;
    }

.google-wallet-qr {
    background: white;
    border: 1px solid #edf0f5;
    border-radius: 22px;
    padding: 18px;
    display: inline-block;
    box-shadow: 0 8px 24px rgba(15,23,42,.08);
}

    .google-wallet-qr img {
        width: 170px;
        height: 170px;
    }

.google-wallet-code {
    margin-top: 12px;
    color: #667085;
    font-size: .8rem;
    font-weight: 700;
    letter-spacing: .08em;
}