/* AG Grid Custom Styles for Alpine Dark Theme */

.ag-theme-alpine-dark {
  --ag-background-color: var(--bg-ag-viewport);
  --ag-foreground-color: var(--text-primary);
  --ag-border-color: var(--bg-ag-border);
  --ag-active-color: #06b6d4;
  --ag-alpine-active-color: #06b6d4;
  --ag-header-background-color: var(--bg-ag-viewport);
  --ag-row-hover-color: var(--bg-ag-hover);
  --ag-selected-row-background-color: var(--bg-ag-selected);
  --ag-odd-row-background-color: var(--bg-ag-row);
  --ag-even-row-background-color: var(--bg-ag-row-even);
  --ag-row-background-color: var(--bg-ag-row);
  --ag-modal-overlay-background-color: var(--bg-ag-overlay);
  --ag-range-selection-border-color: #06b6d4;
  --ag-range-selection-background-color: var(--bg-ag-range-selection);
  --ag-chip-background-color: var(--bg-ag-chip);
  --ag-chip-foreground-color: var(--text-primary);
  --ag-invalid-color: #ef4444;
  --ag-focus-border-color: #06b6d4;
  --ag-input-focus-border-color: #06b6d4;
  --ag-input-focus-box-shadow: 0 0 0 2px rgba(6, 182, 212, 0.15);
  --ag-header-foreground-color: var(--text-secondary);
  --ag-secondary-foreground-color: var(--text-muted);
  --ag-disabled-foreground-color: var(--bg-ag-disabled-text);
  --ag-input-border-color: var(--bg-ag-border);
  --ag-input-background-color: var(--input-bg);
  --ag-toggle-button-off-background-color: var(--bg-ag-toggle-off);
  --ag-toggle-button-on-background-color: #06b6d4;
  --ag-toggle-button-switch-background-color: var(--text-primary);
  --ag-tooltip-background-color: var(--card-bg);
  --ag-tooltip-border-color: var(--bg-ag-border);
  --ag-panel-background-color: var(--card-bg);
  --ag-menu-background-color: var(--card-bg);
  --ag-overlay-background-color: var(--bg-ag-overlay);
  --ag-data-color: var(--text-primary);
  --ag-secondary-border-color: var(--bg-ag-border);
  --ag-row-border-color: var(--bg-ag-border);
  --ag-cell-horizontal-border: var(--bg-ag-border);
  --ag-header-column-separator-color: var(--bg-ag-border);
  --ag-header-column-separator-height: 60%;
  --ag-input-disabled-background-color: var(--bg-ag-disabled-input);
  --ag-input-disabled-border-color: var(--bg-ag-disabled-border);
}

.ag-theme-alpine-dark .ag-root-wrapper {
  border: 1px solid var(--bg-ag-border) !important;
  min-height: 350px;
}

.ag-theme-alpine-dark .ag-cell {
  border-color: var(--bg-ag-border);
  color: var(--text-primary);
  font-size: 12px;
  padding: 8px 12px;
  line-height: normal;
}

.ag-theme-alpine-dark .ag-cell.ag-cell-actions-column {
  overflow: visible;
}

/* Limits column — compact inline style */
.ag-theme-alpine-dark .ag-cell.ag-cell-limits-column {
  padding: 2px 8px;
  font-size: 11px;
}

.ag-limits-cell {
  display: flex;
  flex-direction: column;
  gap: 1px;
  line-height: 1.3;
}

.ag-limits-chip {
  display: flex;
  align-items: center;
  gap: 4px;
  white-space: nowrap;
}

.ag-limits-chip-label {
  color: var(--text-muted);
  font-weight: 600;
  text-transform: uppercase;
  font-size: 9px;
  letter-spacing: 0.3px;
  min-width: 52px;
}

.ag-limits-chip-values {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  color: var(--text-secondary);
  font-size: 11px;
}

.ag-limits-chip-rate {
  font-weight: 500;
  color: var(--text-primary);
}

.ag-limits-chip-sep {
  color: var(--text-muted);
  font-size: 9px;
}

.ag-limits-chip-conc {
  font-weight: 500;
  color: var(--text-secondary);
}

.ag-theme-alpine-dark .ag-header-cell {
  color: var(--text-primary);
  font-weight: 600;
  font-size: 12px;
  background: var(--bg-ag-header);
  border-color: var(--bg-ag-border);
}

/* Allow header text to wrap so columns don't grow unnecessarily */
.ag-theme-alpine-dark .ag-header-cell-label {
  white-space: normal !important;
  line-height: 1.3 !important;
}

.ag-theme-alpine-dark .ag-header-cell-text {
  white-space: normal !important;
}

.ag-theme-alpine-dark .ag-row {
  background: var(--bg-ag-row);
  border-color: var(--bg-ag-border) !important;
  cursor: pointer;
}

/* Alias rows: hint that clicking opens backends */
.ag-theme-alpine-dark .ag-row:not(:has(.ag-cell-actions-column:hover)):hover {
  background: var(--bg-ag-hover) !important;
}

.ag-theme-alpine-dark .ag-row-even {
  background: var(--bg-ag-row-even);
}

.ag-theme-alpine-dark .ag-row-odd {
  background: var(--bg-ag-row);
}

.ag-theme-alpine-dark .ag-row-hover {
  background: var(--bg-ag-hover) !important;
}

.ag-theme-alpine-dark .ag-row-selected {
  background: var(--bg-ag-selected) !important;
}

/* Header border */
.ag-theme-alpine-dark .ag-header {
  border-bottom: 1px solid var(--bg-ag-border) !important;
}

.ag-theme-alpine-dark .ag-header-row {
  border-bottom: 1px solid var(--bg-ag-border) !important;
}

.ag-theme-alpine-dark .ag-header-cell:hover {
  background: var(--bg-ag-header-hover) !important;
}

.ag-theme-alpine-dark .ag-header-cell-comp-wrapper,
.ag-theme-alpine-dark .ag-header-cell-label {
  background: transparent !important;
}

.ag-theme-alpine-dark .ag-header-cell-comp-wrapper:hover,
.ag-theme-alpine-dark .ag-header-cell-label:hover {
  background: transparent !important;
}

.ag-theme-alpine-dark .ag-header-active {
  background: var(--bg-ag-active) !important;
}

.ag-theme-alpine-dark .ag-header-active:hover {
  background: var(--bg-ag-active-hover) !important;
}

/* Pagination */
.ag-theme-alpine-dark .ag-paging-panel {
  background: var(--card-bg);
  border-top: 1px solid var(--card-border);
  color: var(--text-secondary);
  padding: 8px 16px;
}

.ag-theme-alpine-dark .ag-paging-button {
  color: var(--text-primary);
  background: var(--input-bg);
  border: 1px solid var(--input-border);
  border-radius: var(--radius);
  padding: 4px 10px;
  font-size: 12px;
  transition: all 0.2s;
}

.ag-theme-alpine-dark .ag-paging-button:hover:not(:disabled) {
  border-color: var(--primary-color);
  color: var(--primary-color);
  background: var(--bg-page-link-hover);
}

.ag-theme-alpine-dark .ag-paging-button:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

.ag-theme-alpine-dark .ag-paging-row-summary-panel {
  color: var(--text-muted);
  font-size: 12px;
}

/* Filters */
.ag-theme-alpine-dark .ag-filter-body {
  background: var(--card-bg);
  color: var(--text-primary);
}

.ag-theme-alpine-dark .ag-filter-select {
  background: var(--input-bg);
  border: 1px solid var(--input-border);
  color: var(--text-primary);
  border-radius: var(--radius);
  padding: 6px 10px;
}

.ag-theme-alpine-dark .ag-filter-input {
  background: var(--input-bg);
  border: 1px solid var(--input-border);
  color: var(--text-primary);
  border-radius: var(--radius);
  padding: 6px 10px;
}

.ag-theme-alpine-dark .ag-filter-input:focus {
  border-color: var(--primary-color);
  outline: none;
  box-shadow: var(--focus-ring-subtle);
}

/* Menu */
.ag-theme-alpine-dark .ag-menu {
  background: var(--card-bg);
  border: 1px solid var(--card-border);
  box-shadow: 0 0 30px var(--bg-ag-menu-shadow);
}

.ag-theme-alpine-dark .ag-menu-item {
  color: var(--text-secondary);
}

.ag-theme-alpine-dark .ag-menu-item-active {
  background: var(--bg-ag-menu-item-hover);
  color: var(--primary-color);
}

/* Column header menu icon */
.ag-theme-alpine-dark .ag-column-header-menu-icon {
  color: var(--text-secondary);
}

/* Sort icons */
.ag-theme-alpine-dark .ag-icon-asc,
.ag-theme-alpine-dark .ag-icon-desc {
  color: var(--primary-color);
}

/* Custom badges in cells */
.ag-badge {
  padding: 4px 8px;
  border-radius: var(--radius-lg);
  font-size: 11px;
  font-weight: 500;
  display: inline-block;
}

.ag-badge-primary {
  background: var(--bg-badge-primary);
  color: var(--primary-color);
}

.ag-badge-success {
  background: var(--bg-badge-success);
  color: var(--success-color);
}

.ag-badge-warning {
  background: var(--bg-badge-warning);
  color: var(--warning-color);
}

.ag-badge-error {
  background: var(--bg-badge-error);
  color: var(--danger-color);
}

.ag-badge-secondary {
  background: var(--bg-badge-secondary);
  color: var(--text-muted);
}

/* Кликабельный бэдж-переключатель статуса (модели/бэкенды) */
.ag-badge-clickable {
  cursor: pointer;
  user-select: none;
  transition: filter 0.15s ease, transform 0.1s ease;
}

.ag-badge-clickable:hover {
  filter: brightness(1.25);
}

.ag-badge-clickable:active {
  transform: scale(0.94);
}

.ag-badge-clickable .bi {
  font-size: 9px;
  margin-left: 4px;
  vertical-align: 1px;
  opacity: 0.7;
}

.ag-badge-clickable:hover .bi {
  opacity: 1;
}


/* Token display in cells */
.ag-token-display {
  background: var(--bg-token-display);
  padding: 2px 6px;
  border-radius: var(--radius-sm);
  color: var(--primary-color);
  font-family: 'Courier New', monospace;
  font-size: 11px;
}

/* Action buttons in cells */
.ag-actions-cell {
  display: flex;
  gap: 4px;
  align-items: center;
}

.ag-action-btn {
  padding: 4px 8px;
  border: none;
  border-radius: var(--radius-sm);
  cursor: pointer;
  background: var(--input-bg);
  color: var(--text-primary);
  font-size: 11px;
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  display: inline-flex;
  align-items: center;
  gap: 4px;
}

.ag-action-btn:hover {
  transform: translateY(-1px) scale(1.05);
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);
}

.ag-action-btn:active {
  transform: translateY(0) scale(0.98);
  box-shadow: none;
}

.ag-action-btn:focus-visible {
  outline: none;
  box-shadow: var(--focus-ring);
}

.ag-action-btn.ag-action-edit {
  background: var(--bg-action-edit);
  color: var(--primary-color);
}

.ag-action-btn.ag-action-edit:hover {
  background: var(--primary-color);
}

.ag-action-btn.ag-action-delete {
  background: var(--bg-action-delete);
  color: var(--danger-color);
}

.ag-action-btn.ag-action-delete:hover {
  background: var(--danger-color);
}

.ag-action-btn.ag-action-view {
  background: var(--bg-action-view);
  color: var(--secondary-color);
}

.ag-action-btn.ag-action-view:hover {
  background: var(--secondary-color);
}

/* Транзакции (кошелёк): янтарный фон — единый стиль с остальными действиями */
.ag-action-btn.ag-action-tx {
  background: var(--bg-action-tx);
  color: var(--warning-color);
}

.ag-action-btn.ag-action-tx:hover {
  background: var(--warning-color);
}

.ag-action-btn.ag-action-default {
  background: var(--bg-action-view);
  color: var(--success-color);
}

.ag-action-btn.ag-action-default:hover {
  background: var(--success-color);
}

.ag-action-btn.ag-action-default:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

/* Loading overlay */
.ag-theme-alpine-dark .ag-loading-center {
  background: var(--card-bg);
  border: 1px solid var(--card-border);
  border-radius: var(--radius-md);
  padding: 20px;
}

.ag-theme-alpine-dark .ag-loading-text {
  color: var(--text-secondary);
}

/* No rows overlay */
.ag-theme-alpine-dark .ag-overlay-no-rows-center {
  color: var(--text-muted);
  font-size: 13px;
}

/* Center cols viewport */
.ag-theme-alpine-dark .ag-center-cols-viewport {
  background: var(--bg-ag-viewport) !important;
}

.ag-theme-alpine-dark .ag-center-cols-container {
  background: transparent !important;
}

/* Custom scrollbars for AG Grid */
.ag-theme-alpine-dark ::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}

.ag-theme-alpine-dark ::-webkit-scrollbar-track {
  background: var(--bg-scrollbar-track);
}

.ag-theme-alpine-dark ::-webkit-scrollbar-thumb {
  background: var(--bg-scrollbar-thumb);
  border-radius: var(--radius-sm);
}

.ag-theme-alpine-dark ::-webkit-scrollbar-thumb:hover {
  background: var(--bg-scrollbar-thumb-hover);
}

/* Floating filters */
.ag-theme-alpine-dark .ag-floating-filter-input {
  background: var(--input-bg);
  border: 1px solid var(--input-border);
  color: var(--text-primary);
  border-radius: var(--radius-sm);
}

.ag-theme-alpine-dark .ag-floating-filter-input:focus {
  border-color: var(--primary-color);
  outline: none;
}

/* Set filter (checkbox list) */
.ag-theme-alpine-dark .ag-set-filter-item {
  color: var(--text-primary);
}

.ag-theme-alpine-dark .ag-set-filter-item-selected {
  background: var(--bg-ag-set-filter-selected);
  color: var(--primary-color);
}

/* Load and queue cells */
.ag-load-cell {
  display: flex;
  flex-direction: column;
  gap: 3px;
}

.ag-load-info {
  display: flex;
  align-items: center;
  gap: 4px;
}

.ag-load-value {
  font-size: 11px;
  color: var(--text-secondary);
  font-weight: 600;
}

.ag-load-hot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--danger-color);
  animation: pulse-hot 1.8s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}

@keyframes pulse-hot {
  0%, 100% {
    box-shadow: 0 0 0 0 rgba(220, 38, 38, 0.5);
    opacity: 1;
  }
  50% {
    box-shadow: 0 0 0 5px rgba(220, 38, 38, 0);
    opacity: 0.8;
  }
}

.ag-load-bar {
  height: 3px;
  background: var(--bg-queue-load-bar);
  border-radius: var(--radius-sm);
  overflow: hidden;
}

.ag-load-bar .fill {
  height: 100%;
  border-radius: var(--radius-sm);
  transition: width 0.5s cubic-bezier(0.4, 0, 0.2, 1),
              background 0.35s ease;
}

.ag-load-bar .fill.low {
  background: var(--success-color);
}

.ag-load-bar .fill.medium {
  background: var(--warning-color);
}

.ag-load-bar .fill.high {
  background: var(--danger-color);
}

.ag-queue-cell {
  display: flex;
  align-items: center;
  gap: 4px;
}

.ag-queue-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--warning-color);
  animation: pulse-queue 1.5s ease-in-out infinite;
}

@keyframes pulse-queue {
  0%, 100% {
    opacity: 1;
  }
  50% {
    opacity: 0.4;
  }
}

.ag-queue-value {
  font-size: 11px;
  color: var(--text-secondary);
  font-weight: 600;
}

/* Транзакции группы: суммы в гриде (положительные/отрицательные) */
.ag-cell .tx-negative {
  color: #e06572;
  font-weight: 600;
}

.ag-cell .tx-positive {
  color: var(--success-color, #3fb68b);
  font-weight: 600;
}

.ag-cell .ag-cell-comment {
  color: var(--text-secondary);
  font-size: 12px;
}
