/* ── Componentes bs-* — Tema claro minimalista ───────────────────────
   Cards blancas con sombra sutil, botones limpios, bordes suaves.
*/

/* ─────────────────────────── CARD ─────────────────────────────── */
.bs-card {
    background: var(--color-bg);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-sm);
    overflow: hidden;
    color: var(--color-text);
    transition: box-shadow var(--transition), border-color var(--transition);
}
.bs-card:hover { box-shadow: var(--shadow-md); }
.bs-card--subtle { background: var(--color-bg-subtle); border-color: var(--color-border-subtle); box-shadow: none; }
.bs-card--soft   { background: var(--color-bg-soft);   border-color: transparent; box-shadow: none; }

.bs-card--accent         { border-left: 3px solid var(--color-border-strong); }
.bs-card--accent-primary { border-left: 3px solid var(--color-primary); }
.bs-card--accent-success { border-left: 3px solid var(--color-success); }
.bs-card--accent-warning { border-left: 3px solid var(--color-warning); }
.bs-card--accent-danger  { border-left: 3px solid var(--color-danger); }
.bs-card--accent-info    { border-left: 3px solid var(--color-info); }

.bs-card__head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--space-3);
    padding: var(--space-4) var(--space-5);
    border-bottom: 1px solid var(--color-border-subtle);
    background: var(--color-bg);
}
.bs-card--subtle .bs-card__head,
.bs-card--soft .bs-card__head { background: transparent; }

.bs-card__head-text { min-width: 0; flex: 1; }
.bs-card__title {
    margin: 0;
    font-size: var(--text-md);
    font-weight: var(--font-semibold);
    color: var(--color-text-strong);
    line-height: 1.3;
}
.bs-card__subtitle { margin: 2px 0 0; font-size: var(--text-sm); color: var(--color-text-muted); line-height: 1.4; }
.bs-card__meta { flex: 0 0 auto; font-size: var(--text-sm); color: var(--color-text-muted); font-variant-numeric: tabular-nums; }
.bs-card__body { padding: var(--space-4) var(--space-5); }
.bs-card--dense .bs-card__body { padding: var(--space-2); }

/* ─────────────────────────── BADGE ─────────────────────────────── */
.bs-badge {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 2px 8px;
    border-radius: var(--radius-full);
    font-size: var(--text-xs);
    font-weight: var(--font-medium);
    line-height: 1.4;
    white-space: nowrap;
    background: var(--color-bg-soft);
    color: var(--color-text);
    border: 1px solid transparent;
}
.bs-badge--md { font-size: var(--text-sm); padding: 3px 10px; }
.bs-badge--lg { font-size: var(--text-base); padding: 4px 12px; }
.bs-badge i { font-size: 0.9em; line-height: 1; }

.bs-badge--neutral  { background: var(--color-bg-soft);    color: var(--color-text-strong); border-color: var(--color-border); }
.bs-badge--primary  { background: var(--color-primary-soft); color: var(--color-primary-text); }
.bs-badge--success  { background: var(--color-success-soft); color: var(--color-success-text); }
.bs-badge--warning  { background: var(--color-warning-soft); color: var(--color-warning-text); }
.bs-badge--danger   { background: var(--color-danger-soft);  color: var(--color-danger-text); }
.bs-badge--info     { background: var(--color-info-soft);    color: var(--color-info-text); }

.bs-badge--dot { background: transparent; border: 1px solid var(--color-border); color: var(--color-text); padding-left: 6px; }
.bs-badge__dot { width: 8px; height: 8px; border-radius: var(--radius-full); background: var(--color-text-faint); flex-shrink: 0; }
.bs-badge__dot--primary { background: var(--color-primary); }
.bs-badge__dot--success { background: var(--color-success); }
.bs-badge__dot--warning { background: var(--color-warning); }
.bs-badge__dot--danger  { background: var(--color-danger); }
.bs-badge__dot--info    { background: var(--color-info); }

/* ─────────────────────────── BOTON ─────────────────────────────── */
.bs-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 14px;
    border-radius: var(--radius-md);
    font-size: var(--text-sm);
    font-weight: var(--font-medium);
    line-height: 1.4;
    cursor: pointer;
    border: 1px solid transparent;
    transition: all var(--transition-fast);
    text-decoration: none;
    white-space: nowrap;
    background: var(--color-bg);
    color: var(--color-text);
}
.bs-btn:disabled, .bs-btn[disabled] { opacity: 0.5; cursor: not-allowed; pointer-events: none; }
.bs-btn--sm { padding: 4px 10px; font-size: var(--text-xs); }
.bs-btn--lg { padding: 9px 18px; font-size: var(--text-base); }

.bs-btn--primary {
    background: var(--color-primary);
    color: #ffffff;
    border-color: var(--color-primary);
}
.bs-btn--primary:hover {
    background: var(--color-primary-hover);
    border-color: var(--color-primary-hover);
    color: #ffffff;
    text-decoration: none;
}

.bs-btn--secondary {
    background: var(--color-bg);
    color: var(--color-text-strong);
    border-color: var(--color-border);
}
.bs-btn--secondary:hover {
    background: var(--color-bg-soft);
    color: var(--color-text-strong);
    text-decoration: none;
}

.bs-btn--ghost {
    background: transparent;
    color: var(--color-text);
    border-color: transparent;
}
.bs-btn--ghost:hover {
    background: var(--color-bg-soft);
    color: var(--color-text-strong);
    text-decoration: none;
}

.bs-btn--danger {
    background: transparent;
    color: var(--color-danger-text);
    border-color: transparent;
}
.bs-btn--danger:hover {
    background: var(--color-danger-soft);
    color: var(--color-danger-text);
    text-decoration: none;
}

.bs-btn--link {
    background: transparent;
    color: var(--color-primary);
    border-color: transparent;
    padding: 2px 4px;
}
.bs-btn--link:hover {
    color: var(--color-primary-hover);
    text-decoration: underline;
    background: transparent;
}

/* ─────────────────────────── KPI ───────────────────────────────── */
.bs-kpi {
    display: block;
    background: var(--color-bg);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    padding: var(--space-5);
    color: var(--color-text);
    box-shadow: var(--shadow-sm);
    text-decoration: none;
    transition: box-shadow var(--transition);
}
a.bs-kpi:hover { box-shadow: var(--shadow-md); text-decoration: none; color: var(--color-text); }
.bs-kpi__label { display: flex; align-items: center; gap: 6px; color: var(--color-text-muted); font-size: var(--text-sm); margin-bottom: 6px; }
.bs-kpi__label i { color: var(--color-text-faint); }
.bs-kpi__value { font-size: var(--text-2xl); font-weight: var(--font-semibold); color: var(--color-text-strong); line-height: 1.1; font-variant-numeric: tabular-nums; }
.bs-kpi__detail { margin-top: 6px; color: var(--color-text-muted); font-size: var(--text-xs); display: flex; align-items: center; gap: 4px; }
.bs-kpi__trend--up   { color: var(--color-success-text); }
.bs-kpi__trend--down { color: var(--color-danger-text); }
.bs-kpi__trend--flat { color: var(--color-text-faint); }
.bs-kpi--danger .bs-kpi__value  { color: var(--color-danger-text); }
.bs-kpi--success .bs-kpi__value { color: var(--color-success-text); }
.bs-kpi--warning .bs-kpi__value { color: var(--color-warning-text); }
.bs-kpi--accent-primary { border-left: 3px solid var(--color-primary); }
.bs-kpi--accent-success { border-left: 3px solid var(--color-success); }
.bs-kpi--accent-warning { border-left: 3px solid var(--color-warning); }
.bs-kpi--accent-danger  { border-left: 3px solid var(--color-danger); }

/* ─────────────────────────── LIST ITEM ─────────────────────────── */
.bs-list-item {
    display: flex; align-items: center; gap: var(--space-3);
    padding: var(--space-3) var(--space-4);
    border-bottom: 1px solid var(--color-border-subtle);
    color: var(--color-text); text-decoration: none;
    transition: background var(--transition-fast);
}
.bs-list-item:last-child { border-bottom: 0; }
a.bs-list-item:hover { background: var(--color-bg-soft); color: var(--color-text); text-decoration: none; }
.bs-list-item__icon { width: 28px; height: 28px; display: inline-flex; align-items: center; justify-content: center; color: var(--color-text-faint); flex-shrink: 0; }
.bs-list-item__body { flex: 1; min-width: 0; }
.bs-list-item__title { font-weight: var(--font-medium); color: var(--color-text-strong); font-size: var(--text-sm); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bs-list-item__subtitle { font-size: var(--text-xs); color: var(--color-text-muted); margin-top: 2px; }
.bs-list-item__meta { font-size: var(--text-sm); color: var(--color-text-muted); font-variant-numeric: tabular-nums; flex-shrink: 0; }
.bs-list-item__actions { display: flex; gap: 4px; opacity: 0.5; transition: opacity var(--transition-fast); }
.bs-list-item:hover .bs-list-item__actions { opacity: 1; }

/* ─────────────────────────── ACTION BUTTON ─────────────────────── */
.bs-action-btn {
    width: 28px; height: 28px;
    display: inline-flex; align-items: center; justify-content: center;
    border: 1px solid transparent; border-radius: var(--radius);
    background: transparent; color: var(--color-text-muted);
    cursor: pointer; text-decoration: none;
    transition: all var(--transition-fast);
}
.bs-action-btn:hover { background: var(--color-bg-soft); }
.bs-action-btn--primary:hover { color: var(--color-primary); }
.bs-action-btn--success:hover { color: var(--color-success); background: var(--color-success-soft); }
.bs-action-btn--warning:hover { color: var(--color-warning); background: var(--color-warning-soft); }
.bs-action-btn--danger:hover  { color: var(--color-danger);  background: var(--color-danger-soft); }
.bs-action-btn--info:hover    { color: var(--color-info);    background: var(--color-info-soft); }
.bs-action-btn:disabled { opacity: 0.4; cursor: not-allowed; }

/* ─────────────────────────── FORMS ─────────────────────────────── */
.bs-form-group { margin-bottom: var(--space-4); }
.bs-form-label {
    display: block; font-size: var(--text-sm); font-weight: var(--font-medium);
    color: var(--color-text-strong); margin-bottom: 6px;
}
.bs-form-input {
    display: block; width: 100%; padding: 8px 12px;
    font-size: var(--text-sm); font-family: inherit;
    color: var(--color-text-strong); background: var(--color-bg);
    border: 1px solid var(--color-border); border-radius: var(--radius-md);
    transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
}
.bs-form-input:focus {
    outline: none;
    border-color: var(--color-primary);
    box-shadow: 0 0 0 3px var(--color-primary-glow);
}
.bs-form-input::placeholder { color: var(--color-text-faint); }
.bs-form-help { display: block; font-size: var(--text-xs); color: var(--color-text-muted); margin-top: 4px; }
.bs-form-error {
    display: block; font-size: var(--text-sm);
    color: var(--color-danger-text); background: var(--color-danger-soft);
    border: 1px solid var(--color-danger-border);
    padding: 8px 12px; border-radius: var(--radius-md); margin-bottom: var(--space-4);
}
