/* ==========================================================================
   4BREWERS — дизайн-система кабинета. 2/3: основа.
   Сброс, страница, ссылки, фокус, контейнер .wrap, общие анимации. Подключается после tokens.css.
   Mobile-first: базовые правила — телефон, шире — через min-width 560 / 720 / 960 / 1200 px.
   ========================================================================== */

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
  margin: 0;
  min-height: 100dvh;
  background: var(--bg);
  color: var(--fg);
  font: 400 14px/1.4 var(--f-body);
  font-feature-settings: "tnum" 1;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
  padding-bottom: env(safe-area-inset-bottom);
  transition: padding-bottom .3s, background-color .3s, color .3s;
}
body.no-scroll { overflow: hidden; }

img { max-width: 100%; }
button { font: inherit; color: inherit; cursor: pointer; }
button, input, select, textarea { -webkit-tap-highlight-color: transparent; }
input, select, textarea { font: inherit; color: inherit; }
a { color: inherit; }
b, strong { font-weight: 700; }
svg { display: block; }
[hidden] { display: none !important; }
:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }
::selection { background: var(--brand); color: var(--brand-ink); }

/* контейнер страницы: до 1480 px, поля 12 px (телефон) / 20 px (от 720 px) с учётом выреза экрана */
.wrap {
  width: 100%;
  max-width: 1480px;
  margin-inline: auto;
  padding-inline: max(12px, env(safe-area-inset-left)) max(12px, env(safe-area-inset-right));
}
.main { padding-top: 6px; padding-bottom: 24px; }
/* узкая колонка для страниц-форм и документов: читать и заполнять удобнее, чем во всю ширину */
.wrap--narrow { max-width: 920px; }

/* служебное: скрыть визуально, оставить для чтения с экрана */
.sr-only { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }

@keyframes rise { from { opacity: 0; transform: translateY(14px); } }
@keyframes pop { from { opacity: 0; transform: scale(.97); } }
@keyframes blink { 0%, 100% { opacity: 1; } 50% { opacity: .25; } }
@keyframes spin { to { transform: rotate(360deg); } }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
  html { scroll-behavior: auto; }
}

@media (min-width: 720px) {
  .wrap { padding-inline: 20px; }
  .main { padding-top: 10px; }
}
