/*
 * Orena One — Status & Feedback (DS-02). Doc: docs/orena/design-system/14-status-feedback.md
 *
 * Só o que a DS-02 acrescenta ao que já existe em orena.components.css
 * (.o-badge, .o-alert, .o-state, .o-toast, .o-kpi): estados semânticos
 * parcial / indisponível / somente leitura, o status-dot e o status-label.
 * Carrega DEPOIS de orena.components.css no Design System e sozinho no
 * terminal (PDV), que não carrega o DS inteiro. Só tokens --orena-*
 * (nenhuma cor fixa), só seletores .o-*, arquivo local sem import (Edge
 * offline). Sem animação e sem :hover — nada a desligar no reduced-motion.
 *
 * Estado nunca só por cor: todo componente leva TEXTO; o ícone é opcional
 * e decorativo (aria-hidden). A borda também diferencia:
 *   sólida   → estado ativo (success/warning/danger/info/partial/readonly)
 *   tracejada→ ausência (unavailable)
 */

/* ---------- Badge: variantes novas (a base .o-badge fica no components) ---------- */
.o-badge--neutral     { color: var(--orena-neutral); background: var(--orena-neutral-bg); border-color: currentColor; }
.o-badge--partial     { color: var(--orena-partial); background: var(--orena-partial-bg); border-color: currentColor; }
.o-badge--unavailable { color: var(--orena-unavailable); background: var(--orena-unavailable-bg); border: 1px dashed currentColor; }
.o-badge--readonly    { color: var(--orena-text-secondary); background: var(--orena-readonly-bg); border-color: var(--orena-readonly-border); }

/* ---------- Status label: ponto/ícone + texto, sem caixa (cabeçalhos, linhas densas) ---------- */
.o-status-label {
    display: inline-flex;
    align-items: center;
    gap: var(--orena-space-1);
    max-width: 100%;
    color: var(--orena-text-secondary);
    font-size: var(--orena-font-size-xs);
    font-weight: var(--orena-font-weight-semibold);
    line-height: 1.4;
    overflow-wrap: anywhere;
}
.o-status-label--success     { color: var(--orena-success); }
.o-status-label--warning     { color: var(--orena-warning); }
.o-status-label--danger      { color: var(--orena-danger); }
.o-status-label--info        { color: var(--orena-info); }
.o-status-label--partial     { color: var(--orena-partial); }
.o-status-label--unavailable { color: var(--orena-unavailable); }
.o-status-label--readonly    { color: var(--orena-text-secondary); }

/* ---------- Status dot: sempre ao lado de texto (o-status-label ou texto vizinho) ---------- */
.o-status-dot {
    flex: none;
    width: 8px;
    height: 8px;
    border-radius: var(--orena-radius-full);
    background: currentColor;
}
.o-status-dot--unavailable { background: transparent; border: 1px dashed currentColor; }
.o-status-dot--partial     { background: linear-gradient(90deg, currentColor 50%, transparent 50%); border: 1px solid currentColor; }
