.swap-form {
  /* Внутренние отступы карточки для последнего блока с кнопкой */
  /* padding: 0 18px 18px; */
  display: grid;
  gap: 14px;
}

/* Кнопка действия: на всю ширину карточки, визуально центрируется */
.swap-form .nv-btn-primary#swapButton {
  width: 100%;
  justify-self: stretch;
  margin-top: 4px;
}

/* На маленьких экранах немного увеличим отступы для дыхания */
@media (max-width: 480px) {
  .swap-form { gap: 12px; }
}

/* Подстрахуемся фокус-стилем и скрытием спиннеров здесь, если base.css не подгрузится раньше */
.nv-token-select:focus { outline: none; border-color: #8b5cf6; box-shadow: 0 0 0 3px rgba(139,92,246,.18); }
input[type=number]::-webkit-outer-spin-button,
input[type=number]::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
input[type=number] { appearance: textfield; -moz-appearance: textfield; }

/* ===== Nova-compatible rate/quote blocks expected by swap.js ===== */
.swap-info { color: var(--nv-text-2); margin-top: 6px; }
.swap-rate { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.swap-rate .rate-main { display: flex; align-items: center; gap: 8px; color: var(--nv-text-2); }
.swap-rate .rate-main .fa-spinner { opacity: .9; }
.swap-rate .rate-source { color: var(--nv-text-2); font-size: 12px; opacity: .9; }
.swap-rate.loading .rate-main { color: var(--nv-text-2); }
.swap-rate.error .rate-main { color: var(--nv-error); }

/* Детали свопа (совместимы с .nv-details) */
.swap-details { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 8px; }
@media (max-width: 576px) { .swap-details { grid-template-columns: 1fr; } }

/* Контейнер альтернативных маршрутов (если будут отображаться) */
.alternatives-container { margin-top: 10px; border: 1px dashed var(--nv-border); border-radius: 12px; padding: 10px; background: var(--nv-surface); }
.alternatives-container .alt-item { display: grid; grid-template-columns: 1fr auto; gap: 6px; padding: 8px 0; border-bottom: 1px dashed var(--nv-border); }
.alternatives-container .alt-item:last-child { border-bottom: none; }
.alternatives-container .alt-title { font-weight: 600; color: var(--nv-text); }
.alternatives-container .alt-meta { color: var(--nv-text-2); font-size: 13px; }

/* Общее состояние загрузки у блока котировки */
.swap-info.loading .swap-rate { opacity: .95; }
.swap-info.error .swap-rate .rate-main { color: var(--nv-error); }

/* ===== Input tickers (token symbols near inputs) ===== */
.nv-field-group .nv-input-row { display:flex; align-items:stretch; gap:10px; }
.nv-amount-wrap { position: relative; flex: 1 1 auto; }
/* Единая высота для инпута и селектора токена */
.nv-amount-wrap, .nv-token-select { height: var(--nv-input-h, 48px); }
/* Инпут тянется на всю высоту обертки */
.nv-amount-wrap .nv-amount.amount-input { height: 100%; line-height: var(--nv-input-h, 48px); }
/* Селектор токена центрирует контент по вертикали */
.nv-token-select { display:flex; align-items:center; }
/* Тикер внутри инпута справа */
.nv-amount-wrap .nv-amount.amount-input { width: 100%; padding-right: 56px; }
.nv-amount-wrap .nv-input-ticker { position:absolute; right:12px; top:50%; transform: translateY(-50%); color: var(--nv-text-2); font-weight:600; opacity:.9; pointer-events:none; }
@media (max-width: 480px) {
  .nv-field-group .nv-input-row { flex-wrap: nowrap; width: 100%; }
}

/* ===== Smooth show/hide for info and details ===== */
.nv-info { transition: opacity .18s ease, transform .18s ease; opacity: 1; }
.nv-info.hide { opacity: 0; transform: translateY(-4px); }
.nv-details { transition: max-height .25s ease, opacity .18s ease; overflow: hidden; max-height: 200px; opacity: 1; }
.nv-details.hide { max-height: 0; opacity: 0; }

/* ===== Paste button smooth visibility ===== */
.nv-address-row .nv-btn-icon { transition: opacity .16s ease, visibility 0s linear 0s; }
.nv-address-row .nv-btn-icon.hidden { opacity: 0; visibility: hidden; pointer-events: none; display: none; transition: opacity .16s ease, visibility 0s linear .16s; }

/* ===== Remove strong page gradient under footer on this page ===== */
html, body { background: var(--nv-bg) !important; }

/* Help card styles */
.nv-help-card { margin-top: 10px; background: var(--nv-surface); border: 1px solid var(--nv-border); border-radius: 14px; }
.nv-help-card .nv-card-header { padding: 12px 16px; border-bottom: 1px solid var(--nv-border); }
.nv-help-card .nv-card-title { margin: 0; font-size: 15px; display:flex; align-items:center; gap:8px; color: var(--nv-text); }
.nv-help-card .nv-card-body { padding: 12px 16px; color: var(--nv-text-2); }
.nv-help-card .nv-hints-list { margin: 8px 0 0; padding-left: 18px; }
.nv-help-card .nv-hints-list li { margin: 4px 0; }

/* ===== Loading animations: bouncing dots ===== */
.dots { display:inline-block; width: 36px; text-align:center; }
.dots span { display:inline-block; width:6px; height:6px; margin:0 2px; background: var(--nv-text-2); border-radius:50%; animation: dotBounce 1.2s infinite ease-in-out both; }
.dots span:nth-child(1) { animation-delay: -0.32s; }
.dots span:nth-child(2) { animation-delay: -0.16s; }
@keyframes dotBounce { 0%, 80%, 100% { transform: scale(0); } 40% { transform: scale(1); } }

/* Swap button loading state */
.nv-btn-primary.loading { position:relative; pointer-events: none; opacity: .85; display:flex; align-items:center; justify-content:center; }
.nv-btn-primary.loading .button-text-deposit,
.nv-btn-primary.loading .button-text-wallet { visibility: hidden; }
.nv-btn-primary.loading .dots { position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); }
