/* ═══ Сброс и общая типографика — общий слой для всех страниц ═══ */

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent;}

html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto;}
  *,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important;}
}

body{
  font-family:var(--sans);
  font-weight:400;
  font-size:17px;
  line-height:1.6;
  color:var(--text);
  background:var(--bg);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  overflow-x:hidden;
}

h1,h2,h3{font-family:var(--serif);font-weight:400;line-height:1.18;letter-spacing:-0.01em;}
/* Prata идёт одним начертанием (400) — жирность не подделываем синтетикой */

a{color:inherit;text-decoration:none;}
img,svg{display:block;max-width:100%;}
button,input,textarea,select{font:inherit;color:inherit;}
button{background:none;border:none;cursor:pointer;}

::selection{background:var(--accent-soft);color:var(--text);}

:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px;}

.wrap{width:100%;max-width:var(--max-w);margin:0 auto;padding:0 var(--gutter);}
.narrow{max-width:var(--max-w-narrow);}

.visually-hidden{
  position:absolute;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;
}

/* ── Декоративные кляксы из превью бренда ── */
.decor{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0;}
.blob{position:absolute;border-radius:50%;}

/* ── Главная кнопка ── */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  font-family:var(--sans);font-size:16px;font-weight:600;letter-spacing:.005em;
  border-radius:var(--r-pill);padding:16px 30px;
  transition:transform .18s ease, box-shadow .18s ease, background-color .18s ease;
  will-change:transform;
}
.btn svg{width:18px;height:18px;flex:0 0 18px;}

.btn-primary{
  background:var(--accent-grad);color:var(--accent-text);
  box-shadow:0 8px 20px rgba(126,35,34,0.26);
}
.btn-primary:hover{
  background:var(--accent-deep);
  transform:translateY(-2px);
  box-shadow:0 12px 26px rgba(126,35,34,0.32);
}
.btn-primary:active{transform:translateY(0);box-shadow:0 4px 12px rgba(126,35,34,0.26);}

.btn-ghost{background:transparent;color:var(--text);border:1px solid var(--sand-line);}
.btn-ghost:hover{border-color:var(--accent-line);background:var(--accent-soft);}

.btn-wide{width:100%;}

/* ── Логотип: веточка + имя ── */
/* Локап по макету: плашка с лапой + имя + микрострока слогана */
.logo{display:inline-flex;align-items:center;gap:11px;}
.logo .mark{
  width:42px;height:42px;border-radius:12px;flex:0 0 42px;
  background:var(--accent-bright);
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 4px 12px rgba(141,50,49,0.22);
}
.logo .mark svg{width:23px;height:23px;fill:#fff;}
.logo .lockup{display:flex;flex-direction:column;gap:2px;min-width:0;}
.logo .name{
  font-family:var(--serif);font-size:22px;line-height:1.05;
  color:var(--text);letter-spacing:-0.005em;white-space:nowrap;
}
.logo .slogan{
  font-size:8.5px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;
  color:var(--text3);white-space:nowrap;
}

/* Компактный вариант — в шапке внутренних страниц */
.logo.compact .mark{width:34px;height:34px;flex:0 0 34px;border-radius:10px;}
.logo.compact .mark svg{width:19px;height:19px;}
.logo.compact .name{font-size:19px;}
.logo.compact .slogan{display:none;}
@media (max-width:420px){
  .logo .slogan{display:none;}
}

/* ── Подвал ──
   Живёт здесь, а не в landing.css: подвал одинаковый на всех страницах,
   а landing.css грузит только главная. Пока эти правила лежали там,
   на /register, /oferta и /privacy реквизиты выводились простым
   текстом без колонок — и этого никто не видел, потому что проверяли
   их через DOM, а не глазами. */
.site-foot{padding:44px 0 48px;border-top:1px solid var(--hairline);background:var(--bg-deep);margin-top:0;}
.foot-grid{display:flex;justify-content:space-between;gap:34px;flex-wrap:wrap;}
.foot-brand{display:flex;flex-direction:column;gap:12px;align-items:flex-start;}
.foot-copy{font-size:13.5px;color:var(--text3);}

/* Кто за продуктом и кто его делал — мелким, слева под копирайтом.
   Ширину ограничиваем: строка не должна тянуться во всю колонку. */
.foot-credits{
  font-size:12px;line-height:1.5;color:var(--text3);
  max-width:300px;margin-top:-4px;
}
.foot-credits a{color:var(--text2);text-decoration:underline;text-underline-offset:2px;}
.foot-credits a:hover{color:var(--accent);}
/* До заполнения конфига строка пустая — пустой отступ не рисуем */
.foot-credits:empty{display:none;}

/* Реквизиты: ЮKassa требует ФИО, ИНН, контакты и оферту на виду */
.requisites{display:flex;flex-direction:column;gap:7px;min-width:min(100%, 330px);}
.req-row{display:flex;gap:12px;font-size:13.5px;line-height:1.5;}
.req-k{flex:0 0 96px;color:var(--text3);}
.req-v{color:var(--text2);}
.req-v a{color:var(--text2);text-decoration:underline;text-underline-offset:2px;}
.req-v a:hover{color:var(--accent);}
/* Незаполненный реквизит должно быть видно сразу, а не искать глазами */
.req-v.missing, .req-v .missing{color:var(--accent);font-weight:600;}

/* Компактный подвал внутренних страниц */
.foot-slim{padding:30px 0 34px;border-top:1px solid var(--hairline);margin-top:48px;}
.foot-slim .requisites{min-width:0;}

/* Скрытие по атрибуту hidden должно побеждать display у классов.
   Без этого .cl-night{display:flex} перебивает [hidden] и плашка
   висит круглые сутки. */
[hidden]{display:none !important;}
