/* Buttons Component */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 0.65rem 1.25rem;
  border-radius: var(--radius-md);
  font-size: 0.92rem;
  font-weight: 600;
  cursor: pointer;
  border: 1px solid transparent;
  transition: all var(--transition-fast);
  text-decoration: none;
  white-space: nowrap;
}

.btn-primary {
  background: var(--gold-primary);
  color: #0b0f17;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25);
}

.btn-primary:hover {
  background: var(--gold-light);
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.35);
}

.btn-emerald {
  background: #10b981;
  color: #fff;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25);
}

.btn-emerald:hover {
  filter: brightness(1.08);
  transform: translateY(-1px);
}

.btn-secondary {
  background: rgba(255, 255, 255, 0.06);
  color: var(--text-primary);
  border-color: var(--border-card);
}

.btn-secondary:hover {
  background: rgba(255, 255, 255, 0.1);
  color: #fff;
}

.btn-outline-gold {
  background: transparent;
  color: var(--gold-light);
  border-color: var(--gold-border);
}

.btn-outline-gold:hover {
  background: var(--gold-subtle);
  color: #fff;
}

.btn-gold {
  background: var(--gold-primary);
  color: #0b0f17;
  border-color: var(--gold-primary);
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25);
}

.btn-gold:hover {
  background: var(--gold-light);
  border-color: var(--gold-light);
  color: #0b0f17;
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.35);
}

.btn-danger {
  background: var(--ruby-subtle);
  color: var(--ruby);
  border-color: var(--ruby-border);
}

.btn-danger:hover {
  background: var(--ruby);
  color: #fff;
}

.btn-sm {
  padding: 0.4rem 0.8rem;
  font-size: 0.82rem;
  border-radius: var(--radius-sm);
}

/* Button Loading States */
.btn-loading {
  position: relative;
  pointer-events: none !important;
  opacity: 0.85;
  cursor: not-allowed !important;
}

.btn-spinner {
  display: inline-block;
  width: 15px;
  height: 15px;
  border: 2px solid rgba(255, 255, 255, 0.25);
  border-top-color: currentColor;
  border-radius: 50%;
  animation: spin 0.7s linear infinite;
  vertical-align: middle;
  margin-right: 6px;
  flex-shrink: 0;
}

/* Botão com ícone giratório de reload/atualização */
.btn.loading,
.btn.is-loading {
  position: relative;
  pointer-events: none !important;
  opacity: 0.8;
  cursor: wait !important;
}

.btn.loading svg,
.btn.is-loading svg {
  animation: spin 0.8s linear infinite !important;
  transform-origin: center center;
}

.action-loading {
  position: relative;
  pointer-events: none !important;
  opacity: 0.65;
}

.action-loading svg {
  visibility: hidden;
}

.action-loading::after {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  margin-top: -7px;
  margin-left: -7px;
  width: 14px;
  height: 14px;
  border: 2px solid rgba(255, 255, 255, 0.25);
  border-top-color: var(--gold-light, #fbbf24);
  border-radius: 50%;
  animation: spin 0.7s linear infinite;
}

.btn svg {
  display: inline-block;
  vertical-align: -2px;
  flex-shrink: 0;
}

/* ==========================================================
   ESTADOS DESABILITADOS E FEEDBACK VISUAL DE PERMISSÕES
   ========================================================== */
.btn:disabled,
.btn[disabled],
.btn.is-forbidden,
.mesa-view-btn:disabled,
.mesa-view-btn.is-forbidden,
.btn-session-delete:disabled,
.btn-session-delete.is-forbidden,
.ptc-icon-btn:disabled,
.ptc-icon-btn.is-forbidden,
.ptc-quick-btn:disabled,
.ptc-quick-btn.is-forbidden,
.btn-ptc-zerou:disabled,
.btn-ptc-zerou.is-forbidden,
.btn-title-edit:disabled,
.btn-title-edit.is-forbidden {
  opacity: 0.42 !important;
  cursor: not-allowed !important;
  pointer-events: auto !important; /* Permite que tooltips e hover funcionem adequadamente */
  filter: grayscale(35%) !important;
  box-shadow: none !important;
  transform: none !important;
}

.btn:disabled:hover,
.btn[disabled]:hover,
.btn.is-forbidden:hover,
.mesa-view-btn:disabled:hover,
.mesa-view-btn.is-forbidden:hover,
.btn-session-delete:disabled:hover,
.btn-session-delete.is-forbidden:hover,
.ptc-icon-btn:disabled:hover,
.ptc-icon-btn.is-forbidden:hover,
.ptc-quick-btn:disabled:hover,
.ptc-quick-btn.is-forbidden:hover,
.btn-ptc-zerou:disabled:hover,
.btn-ptc-zerou.is-forbidden:hover,
.btn-title-edit:disabled:hover,
.btn-title-edit.is-forbidden:hover {
  transform: none !important;
  box-shadow: none !important;
}

/* Animação suave de aviso caso tente clicar em elemento bloqueado */
@keyframes forbiddenShake {
  0%, 100% { transform: translateX(0); }
  20%, 60% { transform: translateX(-3px); }
  40%, 80% { transform: translateX(3px); }
}

.is-forbidden.shake {
  animation: forbiddenShake 0.35s ease-in-out;
}

/* Textos responsivos em botões (Desktop vs Mobile) */
.btn-text-short {
  display: none;
}

.btn-text-full {
  display: inline;
}

@media (max-width: 768px) {
  .btn-text-full {
    display: none;
  }
  .btn-text-short {
    display: inline;
  }
}
