/* Visual único dos status. Cores personalizadas têm prioridade sobre os estados padrão.
 * status.js apenas identifica a cor fornecida e a luminosidade; a aparência fica aqui.
 */
@layer lv-status {
  :is(.lv-theme-badge,.lv-theme-status-control,.lv-theme-status-panel,.lv-theme-status-text) {
    --lv-status-client-color: initial;
    --lv-status-default-color: var(--lv-ui-muted,var(--lv-muted,#69717c));
    --lv-status-color: var(--lv-status-client-color,var(--lv-status-default-color));
    --lv-status-background-target: #fff;
    --lv-status-background: color-mix(in srgb,var(--lv-status-color) 12%,var(--lv-status-background-target));
    color: var(--lv-status-color) !important;
  }
  [data-lv-status-light=true] { --lv-status-background-target: #111; }
  [data-lv-status-tone=success] { --lv-status-default-color: var(--lv-ui-success,var(--lv-success)); }
  [data-lv-status-tone=warning] { --lv-status-default-color: var(--lv-ui-warning,var(--lv-warning)); }
  [data-lv-status-tone=danger] { --lv-status-default-color: var(--lv-ui-danger,var(--lv-danger)); }
  [data-lv-status-tone=info] { --lv-status-default-color: var(--lv-ui-info,var(--lv-blue)); }

  /* Estados definidos pelo código; as variáveis acompanham a paleta do tema. */
  :is(.fin-status-pago,[data-lv-status-state=pago],[data-lv-status-state=paid],[data-lv-status-state=exempt],[data-lv-status-state=completed]) { --lv-status-default-color: var(--lv-fin-paid,var(--lv-success)); }
  :is(.fin-status-parcial,[data-lv-status-state=parcial]) { --lv-status-default-color: var(--lv-fin-partial,var(--lv-blue)); }
  :is(.fin-status-aberto,[data-lv-status-state=aberto],[data-lv-status-state=pending]) { --lv-status-default-color: var(--lv-fin-open,var(--lv-warning)); }
  :is(.fin-status-atrasado,[data-lv-status-state=atrasado],[data-lv-status-state=overdue],[data-lv-status-state=expired]) { --lv-status-default-color: var(--lv-fin-overdue,var(--lv-danger)); }
  :is(.fin-status-cancelado,.fin-status-inativo,[data-lv-status-state=cancelado],[data-lv-status-state=inactive]) { --lv-status-default-color: var(--lv-fin-cancelled,var(--lv-muted)); }
  :is(.prod-status-active,[data-lv-status-state=active],[data-lv-status-state=published],[data-lv-status-state=autorizada],.fis-status-autorizada,.fis-ambiente.is-producao) { --lv-status-default-color: var(--lv-success); }
  .prod-status-inactive { --lv-status-default-color: var(--lv-danger); }
  [data-lv-module=produtos] [data-lv-status-state=inactive] { --lv-status-default-color: var(--lv-danger); }
  :is(.prod-status-draft,[data-lv-status-state=draft]) { --lv-status-default-color: var(--lv-yellow-text); }
  :is(.lv-ui-badge--active,.lv-status:not(.off)) { --lv-status-default-color: var(--lv-yellow); }
  .lv-ui-badge--success { --lv-status-default-color: var(--lv-success); }
  .lv-ui-badge--error { --lv-status-default-color: var(--lv-danger); }
  :is(.fis-status-processando,[data-lv-status-state=processando]) { --lv-status-default-color: var(--lv-blue); }
  :is(.fis-status-rascunho,.fis-status-cancelada,.fis-ambiente:not(.is-producao),[data-lv-status-state=rascunho],[data-lv-status-state=cancelada]) { --lv-status-default-color: var(--lv-muted); }
  :is(.fis-status-rejeitada,.fis-status-denegada,[data-lv-status-state=rejeitada],[data-lv-status-state=denegada]) { --lv-status-default-color: var(--lv-danger); }
  :is([data-lv-status-state=suspended],[data-lv-status-state=cancelled],[data-lv-status-state=canceled]) { --lv-status-default-color: var(--lv-danger); }
  :is(.ped-import-state.is-importar,.fin-importacao-importar,.mp-importado) { --lv-status-default-color: var(--lv-success); }
  :is(.ped-import-state.is-erro,.fin-importacao-erro) { --lv-status-default-color: var(--lv-danger); }
  :is(.ped-import-state.is-ignorar,.fin-importacao-ignorar) { --lv-status-default-color: var(--lv-muted); }

  .lv-theme-badge {
    display: inline-flex; align-items: center; gap: 6px !important; box-sizing: border-box;
    max-width: 100%; min-width: min-content; flex-shrink: 0;
    min-height: 28px !important; padding: 5px 8px !important;
    border: 1px solid var(--lv-status-color) !important;
    border-radius: var(--lv-button-radius,10px) !important;
    background: var(--lv-status-background) !important;
    font-size: 12px !important; font-weight: 600 !important; line-height: 1.3 !important;
    white-space: normal !important; overflow-wrap: normal !important; word-break: normal !important;
    text-transform: none !important;
  }
  .lv-theme-badge :is(strong,b,.lv-theme-order-text,.ped-order-status-name) { color: inherit !important; }
  .lv-theme-badge > i,.lv-theme-badge > .ped-order-status-dot {
    box-sizing: border-box; width: 9px !important; height: 9px !important; flex: 0 0 9px !important;
    padding: 0 !important; border: 0 !important; border-radius: 50%;
    background: var(--lv-status-color) !important;
  }
  .lv-theme-badge:not(:is(.lv-order-status,.ped-order-list-tag,.lv-tag-chip,.fin-tag)):not([data-lv-badge=tag]):not(:has(svg,i,.ped-order-status-dot))::before {
    content: ''; width: 8px !important; height: 8px !important; flex: 0 0 8px !important; margin: 0 !important;
    opacity: 1 !important; border-radius: 50%; background: var(--lv-status-color);
  }
  .lv-theme-badge:has(svg,i,.ped-order-status-dot)::before,.lv-theme-badge[data-lv-badge=tag]::before { content: none !important; }
  .lv-theme-badge .lv-icon { flex-shrink: 0; color: inherit !important; }
  .lv-theme-badge[hidden] { display: none !important; }

  /* Painéis usam a aparência do status; os seletores seguem os inputs. */
  .lv-theme-status-panel {
    border: 1px solid var(--lv-status-color) !important;
    background: var(--lv-status-background) !important;
  }
  .lv-theme-status-control {
    --lv-button-color: var(--lv-field-text,var(--lv-ink));
    --lv-button-border: var(--lv-field-border,var(--lv-line));
    --lv-button-bg: var(--lv-field-bg);
    --lv-button-hover-color: var(--lv-field-text,var(--lv-ink));
    --lv-button-hover-border: var(--lv-field-border-hover,var(--lv-line));
    --lv-button-hover-bg: var(--lv-field-bg-hover,var(--lv-surface));
    box-sizing: border-box;
    display: flex !important; align-items: center !important; gap: 8px;
    min-height: var(--lv-control-height,40px) !important;
    border: 1px solid var(--lv-field-border,var(--lv-line)) !important;
    background: var(--lv-field-bg) !important;
    color: var(--lv-field-text,var(--lv-ink)) !important;
    font-size: var(--lv-field-font-size,13px) !important; font-weight: 400 !important;
    box-shadow: none !important;
    transition-property: background-color,box-shadow !important;
  }
  .lv-theme-status-control :is(.ped-order-status-name,.fin-status,.lv-ui-value,.lv-ui-selection-value,.lv-icon) { color: inherit !important; }
  .lv-theme-status-control:is(:hover,[aria-expanded=true]):not(:disabled):not([aria-disabled=true]) { background: var(--lv-button-hover-bg) !important; }
  .lv-theme-status-control:focus-visible { outline: 2px solid var(--lv-field-focus,var(--lv-yellow-strong)) !important; outline-offset: 3px; }
  .lv-theme-status-control:is(:disabled,[aria-disabled=true]) { opacity: .55 !important; cursor: not-allowed; }
  :is(.lv-theme-status-control,.lv-theme-status-panel) .lv-theme-badge { min-height: 0 !important; padding: 0 !important; border: 0 !important; background: transparent !important; color: inherit !important; }

  /* A cor é mostrada somente no círculo dentro das opções e valores selecionados. */
  :is(.ped-order-status-option,.fin-status-opcoes>button,.lv-ui-option).lv-theme-status-control {
    --lv-button-bg: transparent;
    --lv-button-border: transparent;
    --lv-button-hover-bg: transparent;
    --lv-button-hover-border: transparent;
    border: 0 !important; background: transparent !important;
  }
  :is(.lv-ui-selection,[role=listbox],.fin-status-menu) .lv-theme-badge,
  .fin-tag-escolha>span {
    border: 0 !important; background: transparent !important; box-shadow: none !important;
    color: var(--lv-field-text,var(--lv-ink)) !important;
  }
  .fin-tag-escolha>span { font-weight: 400 !important; }
  .lv-theme-status-control:not(:has(.ped-order-status-dot,.fin-status))::before,
  .fin-status-menu .fin-status:not(button)::before {
    content: '' !important; display: inline-block; width: 9px !important; height: 9px !important;
    flex: 0 0 9px !important; margin: 0 !important; border: 0 !important; border-radius: 50%;
    background: var(--lv-status-color) !important;
  }
  .fin-status-menu .fin-status>.lv-icon { display: none !important; }
  .lv-theme-status-control .ped-order-status-dot {
    width: 9px !important; height: 9px !important; flex: 0 0 9px !important;
    padding: 0 !important; border: 0 !important; background-clip: border-box;
  }
  .ped-order-status-dot {
    display: inline-block; box-sizing: border-box; flex: 0 0 16px; width: 16px; height: 16px;
    padding: 2px; border: 1px solid var(--status-color,var(--lv-status-color)); border-radius: 50%;
    background: var(--status-color,var(--lv-status-color)); background-clip: content-box;
  }
  .ped-order-status-dot.is-empty { background: transparent; border-style: dashed; }
  .fin-texto-parcial { color: var(--lv-fin-partial); }

  /* Pedidos, marcadores e tags: texto do tema e um único indicador com anel afastado. */
  :is(.lv-order-status,.ped-order-list-tag,.lv-tag-chip,.fin-tag),
  .lv-theme-badge:is(.lv-order-status,.ped-order-list-tag,.lv-tag-chip,.fin-tag) {
    display: inline-flex; align-items: center; gap: 8px !important;
    min-width: 0; min-height: 16px !important; padding: 0 !important;
    border: 0 !important; border-radius: 0 !important;
    background: transparent !important; box-shadow: none !important;
    color: var(--lv-ink) !important;
  }
  :is(.lv-order-status,.ped-order-list-tag,.lv-tag-chip,.fin-tag)::before,
  .lv-theme-badge:is(.lv-order-status,.ped-order-list-tag,.lv-tag-chip,.fin-tag)::before {
    content: '' !important; display: inline-block; box-sizing: border-box;
    width: 16px !important; height: 16px !important; flex: 0 0 16px !important;
    margin: 0 !important; padding: 2px !important; opacity: 1 !important;
    border: 1px solid var(--lv-status-color,var(--status-color,var(--lv-tag-color,var(--lv-muted)))) !important;
    border-radius: 50%;
    background: var(--lv-status-color,var(--status-color,var(--lv-tag-color,var(--lv-muted)))) !important;
    background-clip: content-box !important;
    box-shadow: none !important;
  }
  :is(.lv-order-status,.ped-order-list-tag,.lv-tag-chip,.fin-tag)>:is(i,.ped-order-status-dot) { display: none !important; }
  :is(.lv-ui-selection,[role=listbox],.fin-status-menu) .lv-theme-badge:is(.lv-order-status,.ped-order-list-tag,.lv-tag-chip,.fin-tag)::before {
    width: 9px !important; height: 9px !important; flex-basis: 9px !important;
    padding: 0 !important; border: 0 !important; background-clip: border-box !important;
  }

  /* Marcadores anexados ao pedido têm contorno e fundo suave na própria cor. */
  [data-tags-picker] .ped-tag-entry [data-tag-selected] > .lv-tag-chip {
    min-height: var(--lv-control-height,40px) !important;
    padding: 5px 8px !important;
    border: 1px solid var(--lv-tag-color,var(--lv-status-color,var(--lv-muted))) !important;
    background: color-mix(in srgb,var(--lv-tag-color,var(--lv-status-color,var(--lv-muted))) 10%,var(--lv-ui-surface,var(--lv-surface,#fff))) !important;
  }
  /* No editor do pedido, a seleção usa o amarelo do tema; a cor do marcador fica no círculo. */
  [data-lv-visual="order-additional"] [data-tags-picker] .ped-tag-entry [data-tag-selected] > .lv-tag-chip {
    border-color: var(--lv-yellow) !important;
    background: var(--lv-yellow-soft) !important;
    color: var(--lv-ink) !important;
    font-weight: 700 !important;
  }
  [data-lv-visual="order-additional"] [data-tag-selected] .lv-tag-chip > .ped-order-status-name {
    color: inherit !important;
    font-weight: 700 !important;
  }
  /* Tags selecionadas no financeiro seguem a mesma seleção amarela dos pedidos. */
  [data-fin-tags-picker] .fin-editor-tag-chip {
    min-height: var(--lv-control-height,40px) !important;
    padding: 5px 8px !important;
    border: 1px solid var(--lv-yellow) !important;
    background: var(--lv-yellow-soft) !important;
    color: var(--lv-ink) !important;
    font-weight: 700 !important;
  }
  [data-fin-tags-picker] .fin-editor-tag-chip > .fin-editor-tag-name {
    color: inherit !important;
    font-weight: 700 !important;
  }

  /* Status financeiros: ícone, fundo suave e contorno discreto na paleta do tema. */
  .fin-status.lv-theme-badge {
    --lv-status-background-target: var(--lv-ui-surface,var(--lv-surface,#fff));
    --lv-status-background: color-mix(in srgb,var(--lv-status-color) 8%,var(--lv-status-background-target));
    min-width: 0; min-height: 30px !important; padding: 6px 10px !important;
    border-color: var(--lv-status-color) !important;
    font-weight: 650 !important; gap: 7px !important;
  }
  .fin-status.lv-theme-badge .lv-icon { width: 16px; height: 16px; }
  .fin-status.lv-theme-badge .fin-data-pagamento {
    padding-inline-start: 7px;
    border-inline-start: 1px solid color-mix(in srgb,currentColor 25%,transparent);
    font-variant-numeric: tabular-nums;
  }
  .lv-theme-status-control .fin-status.lv-theme-badge {
    min-height: 0 !important; padding: 0 !important; border: 0 !important;
    background: transparent !important; color: inherit !important;
  }

  /* Indicador compacto de prazo na tabela de lançamentos. */
  .fin-lancamento-vencimento .fin-vencimento-prazo.lv-theme-badge {
    min-height: 20px !important; padding: 2px 6px !important;
    font-size: 10px !important; line-height: 1.2 !important; gap: 4px !important;
  }
  .fin-lancamento-vencimento .fin-vencimento-prazo.lv-theme-badge > .lv-icon {
    width: 12px !important; height: 12px !important; flex: 0 0 12px !important;
  }

  /* O cabeçalho apresenta um único indicador, sem aparência de botão. */
  .fin-editor-status-cabecalho {
    display: grid; align-content: center; justify-items: start; gap: 3px;
    box-sizing: border-box; min-width: 0; max-width: 100%; margin: 0;
    padding: 7px 12px; border-radius: var(--lv-button-radius,10px);
  }
  .fin-editor-status-cabecalho.lv-theme-status-panel {
    --lv-status-background-target: var(--lv-ui-surface,var(--lv-surface,#fff));
    --lv-status-background: color-mix(in srgb,var(--lv-status-color) 8%,var(--lv-status-background-target));
    border-color: var(--lv-status-color) !important;
  }
  .fin-editor-status-rotulo { color: var(--lv-ui-muted,var(--lv-muted)); font-size: 10px; font-weight: 500; line-height: 1.2; }
  .fin-editor-status-cabecalho .fin-status.lv-theme-badge {
    min-height: 0 !important; padding: 0 !important; border: 0 !important;
    background: transparent !important; color: inherit !important;
    font-size: 12px !important; line-height: 1.4 !important;
  }
  .fin-editor-status-cabecalho [hidden] { display: none !important; }
  @media(max-width:700px) {
    .fin-lancamento-status .fin-status.lv-theme-badge { flex-wrap: wrap; }
    .fin-lancamento-status .fin-status.lv-theme-badge .fin-data-pagamento { flex-basis: 100%; padding-inline-start: 0; border: 0; text-align: start; }
  }
}
