/* =========================================================
   YHE COMPONENTS — SPRINT 15.2
   Componentes reutilizables bajo branding final
   ========================================================= */

/* Cards */
.card,
.yhe-card,
.yhe-admin-card,
.yhe-admin-stat-card,
.yhe-admin-action-card {
    border-radius: var(--yhe-radius-lg);
    border: 1px solid var(--yhe-border);
    background: var(--yhe-surface);
    box-shadow: var(--yhe-shadow-sm);
    transition: transform var(--yhe-transition), box-shadow var(--yhe-transition), border-color var(--yhe-transition), background var(--yhe-transition);
}

.card:hover,
.yhe-card:hover,
.yhe-admin-card:hover,
.yhe-admin-stat-card:hover,
.yhe-admin-action-card:hover {
    transform: translateY(-2px);
    box-shadow: var(--yhe-shadow-md) !important;
    border-color: var(--yhe-border-strong);
}

.card-header,
.card-footer {
    background: var(--yhe-surface-soft);
    border-color: var(--yhe-border);
}

/* Buttons */
.btn {
    border-radius: 999px;
    font-weight: 700;
    letter-spacing: -.005em;
    transition: transform var(--yhe-transition), box-shadow var(--yhe-transition), background var(--yhe-transition), border-color var(--yhe-transition), color var(--yhe-transition);
}

.btn:hover {
    transform: translateY(-1px);
}

.btn-dark,
.btn-yhe {
    background: var(--yhe-dark) !important;
    border-color: var(--yhe-dark) !important;
    color: #fff !important;
    box-shadow: 0 10px 22px rgba(27, 41, 43, .12);
}

.btn-dark:hover,
.btn-yhe:hover {
    background: var(--yhe-blue) !important;
    border-color: var(--yhe-blue) !important;
    color: #fff !important;
    box-shadow: 0 14px 28px rgba(27, 41, 43, .16);
}

.btn-outline-dark,
.btn-yhe-outline {
    border-color: rgba(27, 41, 43, .24) !important;
    color: var(--yhe-dark) !important;
    background: rgba(255,255,255,.58);
}

.btn-outline-dark:hover,
.btn-yhe-outline:hover {
    background: var(--yhe-dark) !important;
    border-color: var(--yhe-dark) !important;
    color: #fff !important;
}

.btn-yhe-accent {
    background: var(--yhe-accent) !important;
    border-color: var(--yhe-accent) !important;
    color: var(--yhe-dark) !important;
    box-shadow: 0 10px 22px rgba(231, 254, 65, .22);
}

.btn-yhe-accent:hover {
    filter: saturate(1.05) brightness(.98);
    color: var(--yhe-dark) !important;
}

/* Forms */
.form-label {
    color: var(--yhe-dark);
    font-weight: 700;
}

.form-control,
.form-select {
    border-radius: 14px;
    border: 1px solid var(--yhe-border);
    padding: .85rem 1rem;
    background-color: #fff;
    color: var(--yhe-text);
    box-shadow: none;
    transition: border-color var(--yhe-transition), box-shadow var(--yhe-transition), background var(--yhe-transition);
}

.form-control:focus,
.form-select:focus {
    border-color: var(--yhe-green);
    box-shadow: 0 0 0 4px rgba(95, 160, 129, .16);
}

.form-text {
    color: var(--yhe-text-light);
}

/* Alerts */
.alert,
.yhe-alert,
.yhe-context-alert {
    border: 1px solid transparent;
    border-radius: var(--yhe-radius-md);
    box-shadow: var(--yhe-shadow-sm);
}

.alert-success,
.yhe-alert-success,
.yhe-context-alert-success {
    color: #255A42;
    background: var(--yhe-success-soft);
    border-color: rgba(95,160,129,.22);
}

.alert-warning,
.yhe-alert-warning,
.yhe-context-alert-warning {
    color: #6A5014;
    background: var(--yhe-warning-soft);
    border-color: rgba(232,191,99,.32);
}

.alert-danger,
.yhe-alert-danger,
.yhe-context-alert-danger {
    color: #7A3434;
    background: var(--yhe-danger-soft);
    border-color: rgba(204,107,107,.28);
}

.alert-info,
.yhe-alert-info,
.yhe-context-alert-info {
    color: var(--yhe-blue);
    background: var(--yhe-info-soft);
    border-color: rgba(61,96,99,.20);
}

/* Badges / states */
.badge,
.yhe-badge,
.yhe-status-badge,
.yhe-alert-badge,
.yhe-operational-state,
.yhe-observer-pill {
    border-radius: 999px;
    font-weight: 800;
    letter-spacing: .005em;
}

.yhe-state-new,
.yhe-state-neutral {
    color: var(--yhe-text-soft) !important;
    background: var(--yhe-surface-soft) !important;
}

.yhe-state-validated,
.yhe-state-info,
.yhe-observer-info {
    color: var(--yhe-blue) !important;
    background: var(--yhe-info-soft) !important;
}

.yhe-state-payment-pending,
.yhe-state-warning,
.yhe-observer-attention {
    color: #6A5014 !important;
    background: var(--yhe-warning-soft) !important;
}

.yhe-state-approved,
.yhe-state-primary {
    color: var(--yhe-dark) !important;
    background: rgba(231, 254, 65, .38) !important;
}

.yhe-state-converted,
.yhe-state-active,
.yhe-state-success,
.yhe-observer-success {
    color: #255A42 !important;
    background: var(--yhe-success-soft) !important;
}

.yhe-state-rejected,
.yhe-state-danger,
.yhe-observer-critical {
    color: #7A3434 !important;
    background: var(--yhe-danger-soft) !important;
}

/* Tables */
.table {
    color: var(--yhe-text);
}

.table thead th,
.yhe-admin-table thead th {
    background: var(--yhe-surface-soft) !important;
    color: var(--yhe-text-soft) !important;
    border-color: var(--yhe-border) !important;
}

.table tbody td,
.yhe-admin-table tbody td {
    border-color: var(--yhe-border) !important;
}

.table-hover tbody tr:hover,
.yhe-admin-table tbody tr:hover {
    background: rgba(95, 160, 129, .055) !important;
}

.table-responsive {
    border-radius: var(--yhe-radius-md);
}

/* Navbar */
.navbar {
    letter-spacing: .005em;
}

.navbar-brand {
    letter-spacing: -.02em;
}

.nav-link {
    font-weight: 650;
    border-radius: 999px;
    transition: color var(--yhe-transition), background var(--yhe-transition);
}

.nav-link:hover,
.nav-link:focus {
    color: var(--yhe-dark) !important;
    background: rgba(95, 160, 129, .10);
}
