/* Componentes adicionais e estados do imobrt. Depende de tokens + design-system-components.css. */

.ui-button-primary {
  border-color: var(--rt-c-button-primary-bg);
  background: var(--rt-c-button-primary-bg);
  color: var(--rt-c-button-primary-text);
}
.ui-button-primary:hover:not(:disabled) {
  border-color: var(--rt-c-button-primary-hover);
  background: var(--rt-c-button-primary-hover);
}
.ui-button-sm { min-height: var(--rt-s-control-height-sm); padding-inline: var(--rt-p-space-3); font-size: var(--rt-p-text-xs); }
.ui-button-lg { min-height: var(--rt-s-control-height-lg); padding-inline: var(--rt-p-space-6); font-size: var(--rt-p-text-md); }
.ui-button-block { width: 100%; }
.ui-button-outline { border-color: var(--rt-s-color-border-strong); color: var(--rt-s-color-action); background: transparent; box-shadow: none; }
.ui-button-outline:hover:not(:disabled) { border-color: var(--rt-s-color-action); background: var(--rt-s-color-surface-hover); }
.ui-button-link { padding-inline: 0; color: var(--rt-s-color-action); background: none; box-shadow: none; text-decoration: underline; text-underline-offset: 3px; }
.ui-button-link:hover:not(:disabled) { color: var(--rt-s-color-action-hover); }
.ui-button[aria-busy="true"] { cursor: wait; opacity: .8; pointer-events: none; }
.ui-button[aria-busy="true"]::before { content: ""; width: 1em; height: 1em; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: ui-spin .7s linear infinite; }
@keyframes ui-spin { to { transform: rotate(360deg); } }

.ui-field-help { color: var(--rt-s-color-text-muted); font-size: var(--rt-p-text-xs); line-height: 1.45; }
.ui-field-error { color: var(--rt-s-color-danger); font-size: var(--rt-p-text-xs); line-height: 1.45; }
.ui-input[aria-invalid="true"], .ui-select[aria-invalid="true"], .ui-textarea[aria-invalid="true"] { border-color: var(--rt-s-color-danger); }
.ui-input:disabled, .ui-select:disabled, .ui-textarea:disabled { cursor: not-allowed; color: var(--rt-s-color-text-muted); background: var(--rt-s-color-surface-subtle); opacity: .7; }
.ui-choice { display: inline-flex; align-items: center; gap: var(--rt-p-space-2); color: var(--rt-s-color-text); font-size: var(--rt-p-text-sm); cursor: pointer; }
.ui-choice input { width: 18px; height: 18px; margin: 0; accent-color: var(--rt-s-color-action); }
.ui-choice input:focus-visible { outline: 2px solid var(--rt-s-color-focus); outline-offset: 3px; }
.ui-choice:has(input:disabled) { cursor: not-allowed; opacity: .6; }

.ui-badge-info { border-color: var(--rt-s-color-border); color: var(--rt-c-badge-info-text); background: var(--rt-c-badge-info-bg); }
.ui-badge-neutral { border-color: var(--rt-s-color-border); color: var(--rt-s-color-text); background: var(--rt-s-color-surface-subtle); }
.ui-badge-sm { min-height: 20px; padding-inline: var(--rt-p-space-2); }
.ui-badge-lg { min-height: 28px; padding-inline: var(--rt-p-space-3); font-size: var(--rt-p-text-xs); }

.ui-card-flat { box-shadow: none; }
.ui-card-interactive { transition: box-shadow var(--rt-p-duration-standard) var(--rt-p-ease-standard), border-color var(--rt-p-duration-standard) var(--rt-p-ease-standard); }
.ui-card-interactive:hover { border-color: var(--rt-s-color-border-strong); box-shadow: var(--rt-p-shadow-elevated); }
.ui-card-interactive:focus-within { outline: 2px solid var(--rt-s-color-focus); outline-offset: 2px; }

.ui-alert { display: flex; gap: var(--rt-p-space-3); padding: var(--rt-p-space-4); border: 1px solid var(--rt-s-color-border); border-radius: var(--rt-p-radius-md); color: var(--rt-s-color-text); background: var(--rt-s-color-surface-subtle); }
.ui-alert-title { margin: 0 0 var(--rt-p-space-1); color: var(--rt-s-color-text-strong); font-weight: 700; }
.ui-alert p:last-child { margin-bottom: 0; }
.ui-alert-info { border-color: var(--rt-s-color-border-strong); background: var(--rt-s-color-selection); }
.ui-alert-success { border-color: var(--rt-s-color-success); background: var(--rt-s-color-success-soft); }
.ui-alert-warning { border-color: var(--rt-s-color-warning); background: var(--rt-s-color-warning-soft); }
.ui-alert-danger { border-color: var(--rt-s-color-danger); background: var(--rt-s-color-danger-soft); }

.ui-empty { display: grid; justify-items: center; gap: var(--rt-p-space-3); padding: var(--rt-p-space-10) var(--rt-p-space-6); border: 1px dashed var(--rt-s-color-border-strong); border-radius: var(--rt-p-radius-lg); color: var(--rt-s-color-text-muted); text-align: center; background: var(--rt-s-color-surface); }
.ui-empty-title { margin: 0; color: var(--rt-s-color-text-strong); font-size: var(--rt-p-text-lg); font-weight: 700; }
.ui-empty p { max-width: 48ch; margin: 0; }
.ui-skeleton { display: block; min-height: 1em; border-radius: var(--rt-p-radius-sm); background: var(--rt-s-color-surface-hover); animation: ui-pulse 1.4s ease-in-out infinite; }
@keyframes ui-pulse { 50% { opacity: .55; } }

.ui-table-scroll { width: 100%; overflow-x: auto; overscroll-behavior-inline: contain; }
.ui-table-compact th, .ui-table-compact td { padding: var(--rt-p-space-2) var(--rt-p-space-3); }
.ui-table [data-align="numeric"] { text-align: right; font-variant-numeric: tabular-nums; }
.ui-table [aria-selected="true"] { background: var(--rt-s-color-selection); }
.ui-table caption { padding: var(--rt-p-space-3); color: var(--rt-s-color-text-muted); text-align: left; caption-side: bottom; }

.ui-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: var(--rt-p-space-2); }
.ui-toolbar-end { margin-inline-start: auto; }
.ui-stack { display: grid; gap: var(--rt-p-space-4); }
.ui-cluster { display: flex; flex-wrap: wrap; align-items: center; gap: var(--rt-p-space-3); }
.ui-divider { width: 100%; height: 0; margin-block: var(--rt-p-space-4); border: 0; border-top: 1px solid var(--rt-s-color-border); }
.ui-list { margin: 0; padding: 0; list-style: none; border: 1px solid var(--rt-s-color-border); border-radius: var(--rt-p-radius-md); background: var(--rt-s-color-surface); }
.ui-list-item { display: flex; align-items: center; gap: var(--rt-p-space-3); min-height: var(--rt-s-control-height-md); padding: var(--rt-p-space-3) var(--rt-p-space-4); }
.ui-list-item + .ui-list-item { border-top: 1px solid var(--rt-s-color-border); }
.ui-list-item > :first-child { min-width: 0; flex: 1; }
.ui-progress { width: 100%; height: 8px; overflow: hidden; border: 0; border-radius: var(--rt-p-radius-full); background: var(--rt-s-color-surface-hover); }
.ui-progress::-webkit-progress-bar { border-radius: var(--rt-p-radius-full); background: var(--rt-s-color-surface-hover); }
.ui-progress::-webkit-progress-value { border-radius: var(--rt-p-radius-full); background: var(--rt-s-color-action); }
.ui-progress::-moz-progress-bar { border-radius: var(--rt-p-radius-full); background: var(--rt-s-color-action); }
.ui-pagination { display: flex; flex-wrap: wrap; align-items: center; gap: var(--rt-p-space-2); }
.ui-pagination [aria-current="page"] { border-color: var(--rt-s-color-action); color: var(--rt-s-color-action); background: var(--rt-s-color-selection); }
.ui-toast { width: min(100%, 420px); padding: var(--rt-p-space-4); border: 1px solid var(--rt-s-color-border-strong); border-radius: var(--rt-p-radius-md); color: var(--rt-s-color-text); background: var(--rt-s-color-surface); box-shadow: var(--rt-p-shadow-elevated); }
.ui-toast-title { margin: 0 0 var(--rt-p-space-1); color: var(--rt-s-color-text-strong); font-weight: 700; }
.ui-toast p:last-child { margin: 0; }
.ui-sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.ui-tab:focus-visible, .ui-card-interactive a:focus-visible { outline: 2px solid var(--rt-s-color-focus); outline-offset: 2px; }
[role="tabpanel"][hidden] { display: none; }
.ui-dialog-overlay[hidden], .ui-dialog-content[hidden] { display: none; }

@media (max-width: 600px) {
  .ui-dialog-overlay { align-items: end; padding: 0; }
  .ui-dialog-content { width: 100%; max-height: 90dvh; border-radius: var(--rt-p-radius-lg) var(--rt-p-radius-lg) 0 0; }
  .ui-toolbar-end { margin-inline-start: 0; }
}
@media (prefers-reduced-motion: reduce) {
  .ui-button[aria-busy="true"]::before, .ui-skeleton { animation: none; }
  .ui-card-interactive { transition: none; }
}
