/* Componentes compartidos por sitio público y administración */
.btn,
.form-control,
.form-select,
.input-group-text,
.dropdown-menu,
.modal-content,
.alert,
.card {
    border-radius: var(--app-radius-sm);
}

.btn {
    font-weight: 700;
    min-height: 42px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.35rem;
    padding: 0.62rem 1rem;
}

.btn-primary,
.btn-success {
    background: var(--app-green) !important;
    border-color: var(--app-green) !important;
}

.btn-primary,
.btn-success,
.btn-warning,
.btn-brand-pill,
.btn-jugar,
.btn-header-cta {
    position: relative;
    isolation: isolate;
    box-shadow: 0 12px 26px rgba(var(--app-green-rgb), 0.22);
    transition: transform 0.2s ease, box-shadow 0.2s ease, filter 0.2s ease;
}

.btn-primary::after,
.btn-success::after,
.btn-warning::after,
.btn-brand-pill::after,
.btn-jugar::after,
.btn-header-cta::after {
    content: "";
    position: absolute;
    inset: -7px;
    border-radius: inherit;
    background: color-mix(in srgb, var(--app-gold) 46%, transparent);
    opacity: 0.34;
    z-index: -1;
    animation: appPulseHalo 1.9s ease-out infinite;
}

.btn-primary:hover,
.btn-success:hover {
    background: var(--app-green-dark) !important;
    border-color: var(--app-green-dark) !important;
    box-shadow: 0 16px 34px rgba(var(--app-green-rgb), 0.32);
    transform: translateY(-2px);
}

.btn-warning:hover,
.btn-brand-pill:hover,
.btn-jugar:hover,
.btn-header-cta:hover {
    filter: brightness(1.03);
    box-shadow: 0 16px 34px rgba(214, 162, 58, 0.32);
    transform: translateY(-2px);
}

.btn-warning {
    background: var(--app-gold) !important;
    border-color: var(--app-gold) !important;
    color: var(--app-ink) !important;
}

.btn-danger {
    background: var(--app-red) !important;
    border-color: var(--app-red) !important;
}

.btn-lg {
    min-height: 54px;
    padding: 0.9rem 1.45rem;
    font-size: 1.02rem;
}

@keyframes appPulseHalo {
    0% {
        opacity: 0.36;
        transform: scale(0.96);
    }
    72% {
        opacity: 0;
        transform: scale(1.18);
    }
    100% {
        opacity: 0;
        transform: scale(1.18);
    }
}

@media (prefers-reduced-motion: reduce) {
    .btn-primary::after,
    .btn-success::after,
    .btn-warning::after,
    .btn-brand-pill::after,
    .btn-jugar::after,
    .btn-header-cta::after {
        animation: none;
    }
}

.form-control:focus,
.form-select:focus {
    border-color: var(--app-green);
    box-shadow: 0 0 0 0.2rem rgba(var(--app-green-rgb), 0.18);
}

.card,
.card-custom {
    border: 1px solid var(--app-line);
    box-shadow: var(--app-shadow-sm);
}

.table {
    --bs-table-hover-bg: #f4f8f5;
}

.table thead th {
    background: var(--app-ink);
    color: #fff;
    border-color: var(--app-ink);
    font-size: 0.78rem;
    text-transform: uppercase;
    white-space: nowrap;
}

.badge-status,
.badge-confirmado,
.badge-espera,
.badge-cancelado,
.st-activa,
.st-pausada,
.st-finalizada {
    border-radius: 999px;
    font-size: 0.72rem;
    font-weight: 800;
    padding: 0.42rem 0.68rem;
    text-transform: uppercase;
}

.st-activa,
.badge-confirmado {
    background: #dcefe5;
    color: #104a35;
}

.st-pausada,
.badge-espera {
    background: #fff1ce;
    color: #77510b;
}

.st-finalizada,
.badge-cancelado {
    background: #f8d9d7;
    color: #8c211a;
}

.text-success {
    color: var(--app-green) !important;
}

.bg-success {
    background-color: var(--app-green) !important;
}

.border-success {
    border-color: var(--app-green) !important;
}
