/* Componente de botão do sistema. Os módulos definem apenas tipo e conteúdo:
 * lv-ui-button + --primary | --secondary | --text
 * --icon: somente ícone (informar aria-label); texto com ícone usa o tipo normal.
 * --compact, --danger e --inverse são modificadores opcionais.
 * Desabilitar com disabled em controles nativos ou aria-disabled="true" em links.
 * Classes lv-button/button são aliases para componentes legados.
 * A camada com propriedades importantes mantém a aparência centralizada mesmo
 * durante a transição dos estilos antigos; posicionamento pertence aos módulos.
 */
/* Botões, status e tags seguem o raio e a preferência dos botões do tema.
 * Esta camada é declarada antes de lv-components para priorizar apenas o raio.
 */
@layer lv-control-radius {
  :where(.lv-ui-button, .lv-button, .lv-theme-page),
  :where(.lv-app-admin, .lv-app-front, .lv-site, .lv-print-ui)
    :where(button, [role="button"], input[type="button"], input[type="submit"], input[type="reset"], .button):not(:where(.lv-button-option, .lv-preview-table button)),
  :where(
    .lv-theme-badge, .lv-badge, .lv-ui-badge, .lv-status,
    .lv-order-status, .lv-nfe-badge, .lv-nfe-section-tag, .lv-admin-only-badge,
    .lv-theme-product-status, .gestao-badge, .empresa-cert-status,
    .fin-status, .fin-status-menu > summary, .fin-tag, .fin-cartao-etiqueta, .fin-classificacao,
    .fin-editor-status-cabecalho, .fin-pagamento-status.lv-field,
    .fis-status, .fis-ambiente, .prod-status, .prod-termo-etiqueta,
    .mp-pill, .mp-badge, .mp-importado, .ped-catalog-state, .ped-import-state,
    .ped-status-preview, .ped-order-list-tag, .lv-tag-chip,
    .lv-theme-filter-chip, .lv-list-filter-chip,
    .fin-tag-escolha span, .lv-tag-picker span,
    .fin-classificacao-etiquetas > span, .fin-classificacao-etiquetas > small
  ) {
    border-radius: var(--lv-button-radius, 10px) !important;
  }
  :where(.lv-app-admin, .lv-app-front, .lv-site, .lv-print-ui)
    input[type="file"]::file-selector-button {
    border-radius: var(--lv-button-radius, 10px) !important;
  }
  /* Ações anexas mantêm o encaixe no campo e usam o mesmo raio externo. */
  :is(.lv-inline-control, .lv-client-cep-control, .lv-ui-control) > :is(button, .lv-ui-button, .lv-button) {
    border-radius: 0 var(--lv-button-radius, 10px) var(--lv-button-radius, 10px) 0 !important;
  }
  .lv-ui-control > .lv-ui-button:not(:last-child) {
    border-radius: 0 !important;
  }
}
@layer lv-buttons {
  :root {
    --lv-button-radius: 10px;
    --lv-control-height: 40px;
    --lv-button-height: var(--lv-control-height);
    --lv-button-icon-size: 18px;
    --lv-input-search-icon-size: 24px;
  }
  .admin-theme-button-pill { --lv-button-radius: 999px; }
  .admin-theme-button-square { --lv-button-radius: 0px; }

  :where(.lv-ui-button, .lv-button, .lv-app-admin .button, .lv-app-front .button, .lv-site .button) {
    --lv-button-bg: var(--lv-surface);
    --lv-button-border: var(--lv-line-strong);
    --lv-button-color: var(--lv-ink-soft);
    --lv-button-hover-bg: var(--lv-yellow-soft);
    --lv-button-hover-border: var(--lv-yellow);
    --lv-button-hover-color: var(--lv-ink);
    align-items: center !important;
    appearance: none;
    background: var(--lv-button-bg) !important;
    border: 1px solid var(--lv-button-border) !important;
    border-radius: var(--lv-button-radius) !important;
    box-shadow: none !important;
    color: var(--lv-button-color) !important;
    cursor: pointer !important;
    display: inline-flex;
    font-family: var(--lv-font-stack, Roboto), -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif !important;
    font-size: 13px !important;
    font-style: normal !important;
    font-weight: 700 !important;
    gap: 7px;
    justify-content: center;
    line-height: 1.35 !important;
    min-height: var(--lv-button-height) !important;
    padding: 9px 15px !important;
    text-align: center;
    text-decoration: none !important;
    text-shadow: none !important;
    transform: none !important;
    transition: background-color .15s, border-color .15s, color .15s !important;
    vertical-align: middle;
    white-space: normal;
    overflow-wrap: anywhere;
    -webkit-tap-highlight-color: transparent;
  }
  :is(.lv-ui-button--primary, .lv-button-primary, .button-primary) {
    --lv-button-bg: var(--lv-yellow);
    --lv-button-border: var(--lv-yellow);
    --lv-button-color: var(--lv-primary-text);
    --lv-button-hover-bg: var(--lv-yellow-strong);
    --lv-button-hover-border: var(--lv-yellow-strong);
    --lv-button-hover-color: var(--lv-primary-text);
  }
  :is(.lv-ui-button--text, .lv-ui-button--icon, .lv-ui-button--secondary.button-ghost) {
    --lv-button-bg: transparent;
    --lv-button-border: transparent;
  }
  .lv-ui-button--clear-filters {
    display: inline-flex !important;
    margin: 0 !important;
    min-width: 0 !important;
    max-width: 100%;
    width: auto !important;
    height: auto !important;
    gap: 7px !important;
    text-decoration: none !important;
  }
  .lv-ui-button--inverse {
    --lv-button-color: var(--lv-sidebar-text);
    --lv-button-hover-bg: color-mix(in srgb, var(--lv-sidebar-text) 12%, transparent);
    --lv-button-hover-color: var(--lv-sidebar-text);
  }
  .lv-ui-button--text.lv-ui-button--info {
    --lv-button-color: var(--lv-blue);
    --lv-button-hover-color: var(--lv-blue);
    --lv-button-hover-bg: color-mix(in srgb, var(--lv-blue) 10%, transparent);
    --lv-button-hover-border: transparent;
  }
  .lv-ui-button--secondary.lv-ui-button--info {
    --lv-button-color: var(--lv-blue);
    --lv-button-border: color-mix(in srgb, var(--lv-blue) 65%, var(--lv-surface));
    --lv-button-bg: color-mix(in srgb, var(--lv-blue) 8%, var(--lv-surface));
    --lv-button-hover-color: var(--lv-blue);
    --lv-button-hover-border: var(--lv-blue);
    --lv-button-hover-bg: color-mix(in srgb, var(--lv-blue) 15%, var(--lv-surface));
  }
  :is(.lv-ui-button--danger, .lv-button.lv-danger, .lv-button.mp-danger, .lv-print-danger) {
    --lv-button-color: var(--lv-danger);
    --lv-button-hover-bg: var(--lv-danger-soft);
    --lv-button-hover-border: var(--lv-danger);
    --lv-button-hover-color: var(--lv-danger);
  }
  .lv-ui-button--primary.lv-ui-button--danger {
    --lv-button-bg: var(--lv-danger);
    --lv-button-border: var(--lv-danger);
    --lv-button-color: var(--lv-surface);
    --lv-button-hover-bg: color-mix(in srgb, var(--lv-danger) 85%, var(--lv-sidebar));
    --lv-button-hover-border: var(--lv-button-hover-bg);
    --lv-button-hover-color: var(--lv-surface);
  }
  :where(.lv-ui-button, .lv-button, .lv-app-admin .button, .lv-app-front .button, .lv-site .button):hover {
    background: var(--lv-button-hover-bg) !important;
    border-color: var(--lv-button-hover-border) !important;
    color: var(--lv-button-hover-color) !important;
  }
  :where(.lv-ui-button, .lv-button, .lv-app-admin .button, .lv-app-front .button, .lv-site .button):focus-visible {
    outline: 2px solid var(--lv-ink) !important;
    outline-offset: 3px !important;
    box-shadow: 0 0 0 3px var(--lv-yellow) !important;
  }
  :is(.lv-ui-button, .lv-button) :is(.lv-icon, .dashicons, svg) {
    color: inherit !important;
    flex: 0 0 auto;
    height: var(--lv-button-icon-size) !important;
    width: var(--lv-button-icon-size) !important;
    font-size: var(--lv-button-icon-size) !important;
  }
  :is(.lv-ui-button--compact, .lv-button-compact) {
    min-height: var(--lv-button-height) !important;
    padding: 7px 11px !important;
  }
  .lv-ui-button--icon {
    flex-shrink: 0;
    height: var(--lv-button-height) !important;
    min-width: var(--lv-button-height) !important;
    padding: 0 !important;
    width: var(--lv-button-height) !important;
    font-size: 20px !important;
  }
  /* Lupas anexas à direita do campo usam o mesmo tamanho em todos os módulos. */
  .lv-ui-button--input-search {
    --lv-button-icon-size: var(--lv-input-search-icon-size);
  }
  /* Ícone pode ser combinado com primário/secundário, sem perder suas cores. */
  .lv-ui-button--icon.lv-ui-button--secondary {
    --lv-button-bg: var(--lv-surface);
    --lv-button-border: var(--lv-line-strong);
  }
  .lv-ui-button--icon.lv-ui-button--primary:not(.lv-ui-button--danger) {
    --lv-button-bg: var(--lv-yellow);
    --lv-button-border: var(--lv-yellow);
  }
  /* Controles anexos ao campo mantêm o encaixe e o foco do campo. */
  :is(.lv-inline-control, .lv-client-cep-control, .ped-orders-search, .fin-busca) .lv-ui-button {
    align-self: stretch;
    border-radius: 0 var(--lv-button-radius) var(--lv-button-radius) 0 !important;
  }
  .lv-row-actions-menu .lv-ui-button, [role="menu"] .lv-ui-button {
    justify-content: flex-start;
    text-align: left;
    width: 100%;
  }
  .lv-ui-button:is([aria-pressed="true"], [aria-expanded="true"], .is-active) {
    background: var(--lv-button-hover-bg) !important;
    border-color: var(--lv-button-hover-border) !important;
    color: var(--lv-button-hover-color) !important;
  }
  :is(.lv-ui-button, .lv-button, .lv-app-admin .button, .lv-app-front .button, .lv-site .button):is(:disabled, [aria-disabled="true"], .lv-ui-button--disabled, .disabled) {
    background: color-mix(in srgb, var(--lv-muted) 9%, var(--lv-surface)) !important;
    border-color: var(--lv-line) !important;
    box-shadow: none !important;
    color: var(--lv-muted) !important;
    cursor: not-allowed !important;
    opacity: .65 !important;
    outline: none;
    transform: none !important;
  }
  :is(.lv-ui-button, .lv-button, .button)[hidden] { display: none !important; }
  @media (max-width: 900px), (pointer: coarse) {
    :root { --lv-control-height: 44px; }
    :where(.lv-ui-button, .lv-button, .lv-app-admin .button, .lv-app-front .button, .lv-site .button) {
      min-height: 44px !important;
      max-width: 100%;
    }
    :is(.lv-ui-button--compact, .lv-button-compact) { min-height: 44px !important; }
  }
  @media (prefers-reduced-motion: reduce) {
    :is(.lv-ui-button, .lv-button, .button) { transition: none !important; }
  }
  @media print {
    :where(.lv-ui-button, .lv-button, .lv-app-admin .button, .lv-app-front .button, .lv-site .button) { display: none !important; }
  }
}
