/* ═══════════════════════════════════════════════════════════════════════
   MasterTransform · Общий слой UI-компонентов (кнопки, поля форм).
   Единый источник стиля для публичного сайта и админ-панели.

   Приоритет геометрии — публичный фронт: скруглённый прямоугольник (radius 14),
   padding 15/28, вес 700, hover с подъёмом translateY(-2px) и ростом тени.

   Здесь ТОЛЬКО компоненты, общие для обеих сторон. Цветовые токены
   (--plum, --gold, --rose, --line …) объявляются на каждой стороне в своём
   :root и подхватываются отсюда. Специфичные для админки классы
   (.btn-icon, .btn-soft, .switch) остаются в admin/style.css.
   ═══════════════════════════════════════════════════════════════════════ */

/* ── Кнопки ── */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:9px;
  font-family:var(--sans);font-weight:700;font-size:15px;letter-spacing:.1px;
  line-height:1;white-space:nowrap;
  border:1.6px solid transparent;cursor:pointer;
  border-radius:14px;padding:15px 28px;
  transition:transform .3s cubic-bezier(.2,.8,.2,1),box-shadow .3s,background .3s,color .3s,border-color .3s;
  position:relative;overflow:hidden;
}
.btn-primary{
  background:var(--plum);color:#fbf4ee;border-color:var(--plum);
  box-shadow:0 14px 30px -14px rgba(63,45,71,.6);
}
.btn-primary:hover{
  background:var(--plum-2,#4c3657);transform:translateY(-2px);
  box-shadow:0 20px 40px -14px rgba(63,45,71,.75);
}
.btn-gold{
  background:var(--gold);color:#2c2010;border-color:var(--gold-deep,#a9863f);
  box-shadow:0 14px 30px -16px rgba(169,134,63,.75);
}
.btn-gold:hover{
  background:var(--gold-soft,#e0c78d);transform:translateY(-2px);
  box-shadow:0 20px 40px -16px rgba(169,134,63,.85);
}
.btn-secondary{background:transparent;border-color:var(--plum);color:var(--plum);}
.btn-secondary:hover{background:var(--plum);color:#fbf4ee;transform:translateY(-2px);}
/* ghost — тонкая нейтральная кнопка (используется в админке), в единой геометрии */
.btn-ghost{background:transparent;color:var(--tmuted);border-color:var(--line);}
.btn-ghost:hover{color:var(--tdark);border-color:var(--gold);transform:translateY(-2px);}
.btn-ivory{background:#fbf4ee;color:var(--plum);border-color:#fbf4ee;}
.btn-ivory:hover{background:transparent;color:#fbf4ee;transform:translateY(-2px);}

.btn-wide{width:100%;}
.btn-sm{padding:9px 18px;font-size:13.5px;border-radius:11px;}
.btn[disabled],.btn:disabled{opacity:.55;pointer-events:none;transform:none;}
.btn:active{transform:translateY(0);}
.btn-file{position:relative;overflow:hidden;}

/* ── Поля форм ── */
.field input,.field textarea,.field select,
.lead-field input,.lead-field textarea{
  font-family:var(--sans);font-size:15.5px;font-weight:500;letter-spacing:0;
  color:var(--tdark);background:#fff;
  border:1.5px solid var(--line);border-radius:12px;
  padding:13px 15px;width:100%;resize:vertical;
  transition:border-color .2s,box-shadow .2s;
}
.field input:focus,.field textarea:focus,.field select:focus,
.lead-field input:focus,.lead-field textarea:focus{
  outline:none;border-color:var(--gold);
  box-shadow:0 0 0 3px rgba(198,161,95,.15);
}
/* Состояния валидации — общий словарь для сайта и админки */
.field.is-ok input,.field.is-ok textarea,
.lead-field.is-ok input,.lead-field.is-ok textarea{
  border-color:#7aa88f;background:#fbfffc;
}
.field.is-error input,.field.is-error textarea,
.lead-field.is-error input,.lead-field.is-error textarea{
  border-color:var(--rose-deep,#b06f66);background:#fff8f8;
}

/* Keyboard accessibility shared by public and admin controls. */
.btn:focus-visible,
.field input:focus-visible,.field textarea:focus-visible,.field select:focus-visible,
.lead-field input:focus-visible,.lead-field textarea:focus-visible{
  outline:3px solid rgba(198,161,95,.34);outline-offset:3px;
}
@media (prefers-reduced-motion:reduce){
  .btn{transition:none!important;}
  .btn:hover,.btn:active{transform:none!important;}
}
