/* =========================================================
   ЕДИНАЯ СИСТЕМА КНОПОК И СОСТОЯНИЙ
   Подключается ПОСЛЕДНИМ среди css-файлов на каждой странице.
   Старые классы (.auth-submit-btn, .book-button, .save-btn и др.) наследуют вид
   от вариантов ниже, поэтому разметку переписывать не нужно.

   Варианты:  .btn-primary  основное действие (акцент сайта)
              .btn-dark     тёмная кнопка
              .btn-outline  второстепенное действие (контур)
              .btn-ghost    без фона (ссылка-кнопка)
              .btn-danger   удаление и отмена
   Размеры:   .btn-sm  .btn-lg   Ширина: .btn-block
   Состояния: :hover, :active, :focus-visible, :disabled, .is-busy (см. setBusy в config.js)
   ========================================================= */

:root {
    --btn-primary: #d6393f;        /* белый текст на нём: контраст 4.65:1 (норма 4.5) */
    --btn-primary-hover: #bf2f35;
    --btn-primary-active: #a92a2f;
    --btn-dark: #1a1a1a;
    --btn-dark-hover: #333338;
    --btn-ink: #1a1a1a;
    --btn-line: #cfcfd6;
    --btn-soft-hover: #f4f4f6;
    --btn-danger-bg: #fdeaea;
    --btn-danger-bg-hover: #fadadb;
    --btn-danger-ink: #a31f18;      /* на #fdeaea контраст 6.5:1 */
    --btn-danger-line: #f1bcb8;
    --btn-wa: #12793f;
    --btn-wa-hover: #0e6634;
    --btn-focus: #2563eb;
    --btn-radius: 10px;
    --btn-h: 44px;
    --btn-h-sm: 36px;
}
@media (pointer: fine) and (min-width: 769px) {
    :root { --btn-h: 42px; }
}

/* ---------- Общая форма ---------- */
.add-btn,
.auth-btn,
.auth-sms-btn,
.auth-submit-btn,
.book-button,
.btn,
.btn-block,
.btn-danger,
.btn-dark,
.btn-ghost,
.btn-lg,
.btn-outline,
.btn-primary,
.btn-sm,
.btn-submit,
.btn-whatsapp,
.cancel-btn,
.delete-btn,
.edit-btn,
.hero-btn,
.logout-btn,
.logout-btn-small,
.pc-btn,
.save-btn,
.ui-btn,
.ui-btn-ghost,
.ui-btn-primary,
.upload-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    box-sizing: border-box;
    min-height: var(--btn-h);
    padding: 0 22px;
    border: 1px solid transparent;
    border-radius: var(--btn-radius);
    font-family: inherit;
    font-size: 15px;
    font-weight: 600;
    line-height: 1.2;
    text-align: center;
    text-decoration: none;
    white-space: normal;
    cursor: pointer;
    box-shadow: none;
    transform: none;
    -webkit-tap-highlight-color: transparent;
    -webkit-appearance: none;
    appearance: none;
    transition: background-color .18s ease, border-color .18s ease, color .18s ease, box-shadow .18s ease, transform .08s ease;
}

/* Компактные (шапка, карточки админки) */
.btn-sm,
.auth-btn,
.logout-btn,
.logout-btn-small,
.edit-btn,
.delete-btn {
    min-height: var(--btn-h-sm);
    padding: 0 16px;
    font-size: 14px;
}
@media (pointer: coarse), (max-width: 768px) {
    .btn-sm,
    .auth-btn,
    .logout-btn,
    .logout-btn-small,
    .edit-btn,
    .delete-btn { min-height: 44px; }
}

.btn-lg, .hero-btn { min-height: 52px; padding: 0 34px; font-size: 16px; }
.hero-btn { text-transform: uppercase; letter-spacing: .06em; }
.btn-block { display: flex; width: 100%; }
.btn i, .btn svg { flex: 0 0 auto; }

/* ---------- Основная (акцент) ---------- */
.btn-primary,
.hero-btn,
.auth-btn,
.auth-submit-btn,
.book-button,
.btn-submit,
.save-btn,
.add-btn,
.upload-btn,
.pc-btn,
.ui-btn-primary {
    background: var(--btn-primary);
    border-color: var(--btn-primary);
    color: #fff;
}
.btn-primary:hover:not(:disabled):not([aria-disabled="true"]):not(.is-busy),
.hero-btn:hover:not(:disabled):not([aria-disabled="true"]):not(.is-busy),
.auth-btn:hover:not(:disabled):not([aria-disabled="true"]):not(.is-busy),
.auth-submit-btn:hover:not(:disabled):not([aria-disabled="true"]):not(.is-busy),
.book-button:hover:not(:disabled):not([aria-disabled="true"]):not(.is-busy),
.btn-submit:hover:not(:disabled):not([aria-disabled="true"]):not(.is-busy),
.save-btn:hover:not(:disabled):not([aria-disabled="true"]):not(.is-busy),
.add-btn:hover:not(:disabled):not([aria-disabled="true"]):not(.is-busy),
.upload-btn:hover:not(:disabled):not([aria-disabled="true"]):not(.is-busy),
.pc-btn:hover:not(:disabled):not([aria-disabled="true"]):not(.is-busy),
.ui-btn-primary:hover:not(:disabled):not([aria-disabled="true"]):not(.is-busy) {
    background: var(--btn-primary-hover);
    border-color: var(--btn-primary-hover);
    box-shadow: 0 6px 16px rgba(214, 57, 63, .28);
}
.btn-primary:active:not(:disabled):not([aria-disabled="true"]),
.hero-btn:active:not(:disabled):not([aria-disabled="true"]),
.auth-btn:active:not(:disabled):not([aria-disabled="true"]),
.auth-submit-btn:active:not(:disabled):not([aria-disabled="true"]),
.book-button:active:not(:disabled):not([aria-disabled="true"]),
.btn-submit:active:not(:disabled):not([aria-disabled="true"]),
.save-btn:active:not(:disabled):not([aria-disabled="true"]),
.add-btn:active:not(:disabled):not([aria-disabled="true"]),
.upload-btn:active:not(:disabled):not([aria-disabled="true"]),
.pc-btn:active:not(:disabled):not([aria-disabled="true"]),
.ui-btn-primary:active:not(:disabled):not([aria-disabled="true"]) {
    background: var(--btn-primary-active);
    border-color: var(--btn-primary-active);
    box-shadow: none;
    transform: translateY(1px);
}

/* ---------- Тёмная ---------- */
.btn-dark { background: var(--btn-dark); border-color: var(--btn-dark); color: #fff; }
.btn-dark:hover:not(:disabled):not([aria-disabled="true"]):not(.is-busy) { background: var(--btn-dark-hover); border-color: var(--btn-dark-hover); box-shadow: 0 6px 16px rgba(0, 0, 0, .2); }
.btn-dark:active:not(:disabled):not([aria-disabled="true"]) { background: #000; transform: translateY(1px); box-shadow: none; }

/* ---------- Контур (второстепенная) ---------- */
.btn-outline,
.auth-sms-btn,
.cancel-btn,
.edit-btn,
.logout-btn,
.ui-btn-ghost {
    background: #fff;
    border-color: var(--btn-line);
    color: var(--btn-ink);
}
.btn-outline:hover:not(:disabled):not([aria-disabled="true"]):not(.is-busy),
.auth-sms-btn:hover:not(:disabled):not([aria-disabled="true"]):not(.is-busy),
.cancel-btn:hover:not(:disabled):not([aria-disabled="true"]):not(.is-busy),
.edit-btn:hover:not(:disabled):not([aria-disabled="true"]):not(.is-busy),
.logout-btn:hover:not(:disabled):not([aria-disabled="true"]):not(.is-busy),
.ui-btn-ghost:hover:not(:disabled):not([aria-disabled="true"]):not(.is-busy) {
    background: var(--btn-soft-hover);
    border-color: var(--btn-ink);
}
.btn-outline:active:not(:disabled):not([aria-disabled="true"]),
.auth-sms-btn:active:not(:disabled):not([aria-disabled="true"]),
.cancel-btn:active:not(:disabled):not([aria-disabled="true"]),
.edit-btn:active:not(:disabled):not([aria-disabled="true"]),
.logout-btn:active:not(:disabled):not([aria-disabled="true"]),
.ui-btn-ghost:active:not(:disabled):not([aria-disabled="true"]) { background: #e9e9ee; transform: translateY(1px); }

/* ---------- Без фона ---------- */
.btn-ghost { background: transparent; border-color: transparent; color: var(--btn-ink); }
.btn-ghost:hover:not(:disabled):not([aria-disabled="true"]):not(.is-busy) { background: rgba(0, 0, 0, .06); }
.btn-ghost:active:not(:disabled):not([aria-disabled="true"]) { background: rgba(0, 0, 0, .1); transform: translateY(1px); }

/* ---------- Опасная (удаление, отмена брони, выход) ---------- */
.btn-danger,
.delete-btn,
.logout-btn-small {
    background: var(--btn-danger-bg);
    border-color: var(--btn-danger-line);
    color: var(--btn-danger-ink);
}
.btn-danger:hover:not(:disabled):not([aria-disabled="true"]):not(.is-busy),
.delete-btn:hover:not(:disabled):not([aria-disabled="true"]):not(.is-busy),
.logout-btn-small:hover:not(:disabled):not([aria-disabled="true"]):not(.is-busy) {
    background: var(--btn-danger-bg-hover);
    border-color: var(--btn-danger-ink);
}
.btn-danger:active:not(:disabled):not([aria-disabled="true"]),
.delete-btn:active:not(:disabled):not([aria-disabled="true"]),
.logout-btn-small:active:not(:disabled):not([aria-disabled="true"]) { background: #f6c9c7; transform: translateY(1px); }

/* ---------- WhatsApp ---------- */
.btn-whatsapp { background: var(--btn-wa); border-color: var(--btn-wa); color: #fff; }
.btn-whatsapp:hover:not(:disabled):not([aria-disabled="true"]):not(.is-busy) { background: var(--btn-wa-hover); border-color: var(--btn-wa-hover); }

/* Кнопки-ссылки в блоке «связаться» на странице контактов занимают всю ширину */
.booking-contact .btn-primary,
.booking-contact .btn-whatsapp { display: flex; width: 100%; margin-bottom: 10px; }

/* Атрибут hidden должен работать и на кнопках с display:inline-flex */
button[hidden], a[hidden], .btn[hidden] { display: none !important; }

/* ---------- Заблокирована ---------- */
.add-btn:disabled,
.auth-btn:disabled,
.auth-sms-btn:disabled,
.auth-submit-btn:disabled,
.book-button:disabled,
.btn:disabled,
.btn-block:disabled,
.btn-danger:disabled,
.btn-dark:disabled,
.btn-ghost:disabled,
.btn-lg:disabled,
.btn-outline:disabled,
.btn-primary:disabled,
.btn-sm:disabled,
.btn-submit:disabled,
.btn-whatsapp:disabled,
.cancel-btn:disabled,
.delete-btn:disabled,
.edit-btn:disabled,
.hero-btn:disabled,
.logout-btn:disabled,
.logout-btn-small:disabled,
.pc-btn:disabled,
.save-btn:disabled,
.ui-btn:disabled,
.ui-btn-ghost:disabled,
.ui-btn-primary:disabled,
.upload-btn:disabled,
.add-btn[aria-disabled="true"],
.auth-btn[aria-disabled="true"],
.auth-sms-btn[aria-disabled="true"],
.auth-submit-btn[aria-disabled="true"],
.book-button[aria-disabled="true"],
.btn[aria-disabled="true"],
.btn-block[aria-disabled="true"],
.btn-danger[aria-disabled="true"],
.btn-dark[aria-disabled="true"],
.btn-ghost[aria-disabled="true"],
.btn-lg[aria-disabled="true"],
.btn-outline[aria-disabled="true"],
.btn-primary[aria-disabled="true"],
.btn-sm[aria-disabled="true"],
.btn-submit[aria-disabled="true"],
.btn-whatsapp[aria-disabled="true"],
.cancel-btn[aria-disabled="true"],
.delete-btn[aria-disabled="true"],
.edit-btn[aria-disabled="true"],
.hero-btn[aria-disabled="true"],
.logout-btn[aria-disabled="true"],
.logout-btn-small[aria-disabled="true"],
.pc-btn[aria-disabled="true"],
.save-btn[aria-disabled="true"],
.ui-btn[aria-disabled="true"],
.ui-btn-ghost[aria-disabled="true"],
.ui-btn-primary[aria-disabled="true"],
.upload-btn[aria-disabled="true"],
.add-btn.is-disabled,
.auth-btn.is-disabled,
.auth-sms-btn.is-disabled,
.auth-submit-btn.is-disabled,
.book-button.is-disabled,
.btn.is-disabled,
.btn-block.is-disabled,
.btn-danger.is-disabled,
.btn-dark.is-disabled,
.btn-ghost.is-disabled,
.btn-lg.is-disabled,
.btn-outline.is-disabled,
.btn-primary.is-disabled,
.btn-sm.is-disabled,
.btn-submit.is-disabled,
.btn-whatsapp.is-disabled,
.cancel-btn.is-disabled,
.delete-btn.is-disabled,
.edit-btn.is-disabled,
.hero-btn.is-disabled,
.logout-btn.is-disabled,
.logout-btn-small.is-disabled,
.pc-btn.is-disabled,
.save-btn.is-disabled,
.ui-btn.is-disabled,
.ui-btn-ghost.is-disabled,
.ui-btn-primary.is-disabled,
.upload-btn.is-disabled {
    opacity: .55;
    cursor: not-allowed;
    box-shadow: none;
    transform: none;
}

/* ---------- Идёт запрос (setBusy ставит disabled + .is-busy; спиннер рисует mobile.css) ---------- */
.add-btn.is-busy,
.auth-btn.is-busy,
.auth-sms-btn.is-busy,
.auth-submit-btn.is-busy,
.book-button.is-busy,
.btn.is-busy,
.btn-block.is-busy,
.btn-danger.is-busy,
.btn-dark.is-busy,
.btn-ghost.is-busy,
.btn-lg.is-busy,
.btn-outline.is-busy,
.btn-primary.is-busy,
.btn-sm.is-busy,
.btn-submit.is-busy,
.btn-whatsapp.is-busy,
.cancel-btn.is-busy,
.delete-btn.is-busy,
.edit-btn.is-busy,
.hero-btn.is-busy,
.logout-btn.is-busy,
.logout-btn-small.is-busy,
.pc-btn.is-busy,
.save-btn.is-busy,
.ui-btn.is-busy,
.ui-btn-ghost.is-busy,
.ui-btn-primary.is-busy,
.upload-btn.is-busy,
.add-btn.is-busy:disabled,
.auth-btn.is-busy:disabled,
.auth-sms-btn.is-busy:disabled,
.auth-submit-btn.is-busy:disabled,
.book-button.is-busy:disabled,
.btn.is-busy:disabled,
.btn-block.is-busy:disabled,
.btn-danger.is-busy:disabled,
.btn-dark.is-busy:disabled,
.btn-ghost.is-busy:disabled,
.btn-lg.is-busy:disabled,
.btn-outline.is-busy:disabled,
.btn-primary.is-busy:disabled,
.btn-sm.is-busy:disabled,
.btn-submit.is-busy:disabled,
.btn-whatsapp.is-busy:disabled,
.cancel-btn.is-busy:disabled,
.delete-btn.is-busy:disabled,
.edit-btn.is-busy:disabled,
.hero-btn.is-busy:disabled,
.logout-btn.is-busy:disabled,
.logout-btn-small.is-busy:disabled,
.pc-btn.is-busy:disabled,
.save-btn.is-busy:disabled,
.ui-btn.is-busy:disabled,
.ui-btn-ghost.is-busy:disabled,
.ui-btn-primary.is-busy:disabled,
.upload-btn.is-busy:disabled {
    opacity: .85;
    cursor: progress;
}

/* ---------- Фокус с клавиатуры: чёткий контур на всех интерактивных элементах ---------- */
a:focus-visible,
button:focus-visible,
summary:focus-visible,
[role="button"]:focus-visible,
[tabindex]:not([tabindex="-1"]):focus-visible {
    outline: 3px solid var(--btn-focus);
    outline-offset: 2px;
}
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
    outline: 3px solid rgba(37, 99, 235, .4) !important;
    outline-offset: 1px;
    border-color: var(--btn-focus);
}
input[type="checkbox"]:focus-visible,
input[type="radio"]:focus-visible { outline-offset: 2px; }

@media (prefers-reduced-motion: reduce) {
    .add-btn,
    .auth-btn,
    .auth-sms-btn,
    .auth-submit-btn,
    .book-button,
    .btn,
    .btn-block,
    .btn-danger,
    .btn-dark,
    .btn-ghost,
    .btn-lg,
    .btn-outline,
    .btn-primary,
    .btn-sm,
    .btn-submit,
    .btn-whatsapp,
    .cancel-btn,
    .delete-btn,
    .edit-btn,
    .hero-btn,
    .logout-btn,
    .logout-btn-small,
    .pc-btn,
    .save-btn,
    .ui-btn,
    .ui-btn-ghost,
    .ui-btn-primary,
    .upload-btn { transition: none; }
    .btn-primary:active:not(:disabled):not([aria-disabled="true"]),
    .hero-btn:active:not(:disabled):not([aria-disabled="true"]),
    .auth-btn:active:not(:disabled):not([aria-disabled="true"]),
    .auth-submit-btn:active:not(:disabled):not([aria-disabled="true"]),
    .book-button:active:not(:disabled):not([aria-disabled="true"]),
    .btn-submit:active:not(:disabled):not([aria-disabled="true"]),
    .save-btn:active:not(:disabled):not([aria-disabled="true"]),
    .add-btn:active:not(:disabled):not([aria-disabled="true"]),
    .upload-btn:active:not(:disabled):not([aria-disabled="true"]),
    .pc-btn:active:not(:disabled):not([aria-disabled="true"]),
    .ui-btn-primary:active:not(:disabled):not([aria-disabled="true"]),
    .btn-dark:active:not(:disabled):not([aria-disabled="true"]),
    .btn-outline:active:not(:disabled):not([aria-disabled="true"]),
    .auth-sms-btn:active:not(:disabled):not([aria-disabled="true"]),
    .cancel-btn:active:not(:disabled):not([aria-disabled="true"]),
    .edit-btn:active:not(:disabled):not([aria-disabled="true"]),
    .logout-btn:active:not(:disabled):not([aria-disabled="true"]),
    .ui-btn-ghost:active:not(:disabled):not([aria-disabled="true"]),
    .btn-ghost:active:not(:disabled):not([aria-disabled="true"]),
    .btn-danger:active:not(:disabled):not([aria-disabled="true"]),
    .delete-btn:active:not(:disabled):not([aria-disabled="true"]),
    .logout-btn-small:active:not(:disabled):not([aria-disabled="true"]) { transform: none; }
}
