/* ========================================================================
   base.css — reset, типографика, layout, анимации, утилиты — вынесено из style.css при сборке UI kit
   ======================================================================== */

/* === 2. Reset + базовая типографика ==================================== */
*,
*::before,
*::after {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

html {
    -webkit-text-size-adjust: 100%;
    scroll-behavior: smooth;
}

body {
    font-family: var(--font-body);
    font-size: var(--fs-base);
    line-height: var(--lh-normal);
    color: var(--color-text);
    background-color: var(--color-bg);
    min-height: 100vh;
    display: flex;
    flex-direction: column;
}

img,
svg,
video {
    display: block;
    max-width: 100%;
    height: auto;
}

a {
    color: var(--color-primary);
    text-decoration: none;
    transition: color var(--t-fast);
}

a:hover {
    color: var(--color-primary-dark);
}

ul,
ol {
    list-style: none;
}

button {
    font: inherit;
    cursor: pointer;
    border: none;
    background: none;
    color: inherit;
}

input,
textarea,
select {
    font: inherit;
    color: inherit;
}

h1, h2, h3, h4, h5, h6 {
    font-family: var(--font-display);
    font-weight: 600;
    line-height: var(--lh-tight);
    color: var(--color-text);
}

h1 { font-size: var(--fs-4xl); }
h2 { font-size: var(--fs-3xl); }
h3 { font-size: var(--fs-2xl); }
h4 { font-size: var(--fs-xl); }
h5 { font-size: var(--fs-lg); }
h6 { font-size: var(--fs-md); }

p {
    line-height: var(--lh-relaxed);
}

[hidden] {
    display: none !important;
}


/* === 3. Layout ========================================================== */
.container {
    width: 100%;
    max-width: var(--container-max);
    margin: 0 auto;
    padding: 0 var(--container-pad);
}

.main-content {
    flex: 1;
    padding-top: 80px; /* высота фиксированной шапки */
}

section {
    padding: var(--space-16) 0;
}

.section-narrow {
    padding: var(--space-12) 0;
}

.section-tight {
    padding: var(--space-8) 0;
}

.section-bg {
    background-color: var(--color-bg-section);
}

.section-soft {
    background-color: var(--color-bg-soft);
}

.section-title {
    text-align: center;
    margin-bottom: var(--space-3);
}

.section-subtitle {
    text-align: center;
    color: var(--color-text-muted);
    max-width: 640px;
    margin: 0 auto var(--space-12);
}

.text-center { text-align: center; }
.text-muted { color: var(--color-text-muted); }
.text-primary { color: var(--color-primary); }


/* === 14. Анимации ======================================================= */
@keyframes fadeIn {
    from { opacity: 0; transform: translateY(8px); }
    to { opacity: 1; transform: translateY(0); }
}

@keyframes pulse {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.6; }
}

.fade-in {
    animation: fadeIn 0.4s ease forwards;
}


/* === 20. Утилиты ======================================================== */
.scroll-top-btn {
    position: fixed;
    right: 24px;
    bottom: 24px;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-dark) 100%);
    color: #FFFFFF;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: var(--shadow-purple);
    cursor: pointer;
    opacity: 0;
    transform: translateY(8px);
    transition: opacity var(--t), transform var(--t);
    z-index: 50;
    border: none;
}

.scroll-top-btn.is-visible {
    opacity: 1;
    transform: translateY(0);
}

.scroll-top-btn:hover {
    transform: translateY(-2px);
}

.scroll-top-btn svg {
    width: 18px;
    height: 18px;
}



/* === Утилиты отступов и типографики (UI kit) =========================== */
/* Заменяют инлайн style="margin/padding: var(--space-N)" в шаблонах. */

.mt-1 { margin-top: var(--space-1); }
.mb-1 { margin-bottom: var(--space-1); }
.pt-1 { padding-top: var(--space-1); }
.pb-1 { padding-bottom: var(--space-1); }
.mt-2 { margin-top: var(--space-2); }
.mb-2 { margin-bottom: var(--space-2); }
.pt-2 { padding-top: var(--space-2); }
.pb-2 { padding-bottom: var(--space-2); }
.mt-3 { margin-top: var(--space-3); }
.mb-3 { margin-bottom: var(--space-3); }
.pt-3 { padding-top: var(--space-3); }
.pb-3 { padding-bottom: var(--space-3); }
.mt-4 { margin-top: var(--space-4); }
.mb-4 { margin-bottom: var(--space-4); }
.pt-4 { padding-top: var(--space-4); }
.pb-4 { padding-bottom: var(--space-4); }
.mt-5 { margin-top: var(--space-5); }
.mb-5 { margin-bottom: var(--space-5); }
.pt-5 { padding-top: var(--space-5); }
.pb-5 { padding-bottom: var(--space-5); }
.mt-6 { margin-top: var(--space-6); }
.mb-6 { margin-bottom: var(--space-6); }
.pt-6 { padding-top: var(--space-6); }
.pb-6 { padding-bottom: var(--space-6); }
.mt-7 { margin-top: var(--space-7); }
.mb-7 { margin-bottom: var(--space-7); }
.pt-7 { padding-top: var(--space-7); }
.pb-7 { padding-bottom: var(--space-7); }
.mt-8 { margin-top: var(--space-8); }
.mb-8 { margin-bottom: var(--space-8); }
.pt-8 { padding-top: var(--space-8); }
.pb-8 { padding-bottom: var(--space-8); }
.mt-9 { margin-top: var(--space-9); }
.mb-9 { margin-bottom: var(--space-9); }
.pt-9 { padding-top: var(--space-9); }
.pb-9 { padding-bottom: var(--space-9); }
.mt-10 { margin-top: var(--space-10); }
.mb-10 { margin-bottom: var(--space-10); }
.pt-10 { padding-top: var(--space-10); }
.pb-10 { padding-bottom: var(--space-10); }
.mt-12 { margin-top: var(--space-12); }
.mb-12 { margin-bottom: var(--space-12); }
.pt-12 { padding-top: var(--space-12); }
.pb-12 { padding-bottom: var(--space-12); }
.mt-16 { margin-top: var(--space-16); }
.mb-16 { margin-bottom: var(--space-16); }
.pt-16 { padding-top: var(--space-16); }
.pb-16 { padding-bottom: var(--space-16); }
.mt-20 { margin-top: var(--space-20); }
.mb-20 { margin-bottom: var(--space-20); }
.pt-20 { padding-top: var(--space-20); }
.pb-20 { padding-bottom: var(--space-20); }
.mt-24 { margin-top: var(--space-24); }
.mb-24 { margin-bottom: var(--space-24); }
.pt-24 { padding-top: var(--space-24); }
.pb-24 { padding-bottom: var(--space-24); }
.mt-0 { margin-top: 0; }
.mb-0 { margin-bottom: 0; }

/* Типографика */
.font-display { font-family: var(--font-display); }
.lh-relaxed { line-height: var(--lh-relaxed); }
.fs-md { font-size: var(--fs-md); }
.fs-lg { font-size: var(--fs-lg); }
.maxw-720 { max-width: 720px; margin-left: auto; margin-right: auto; }

/* === Доп. утилиты UI kit ================================================ */
.pl-1 { padding-left: var(--space-1); }
.pr-1 { padding-right: var(--space-1); }
.pl-2 { padding-left: var(--space-2); }
.pr-2 { padding-right: var(--space-2); }
.pl-3 { padding-left: var(--space-3); }
.pr-3 { padding-right: var(--space-3); }
.pl-4 { padding-left: var(--space-4); }
.pr-4 { padding-right: var(--space-4); }
.pl-5 { padding-left: var(--space-5); }
.pr-5 { padding-right: var(--space-5); }
.pl-6 { padding-left: var(--space-6); }
.pr-6 { padding-right: var(--space-6); }
.pl-7 { padding-left: var(--space-7); }
.pr-7 { padding-right: var(--space-7); }
.pl-8 { padding-left: var(--space-8); }
.pr-8 { padding-right: var(--space-8); }
.pl-9 { padding-left: var(--space-9); }
.pr-9 { padding-right: var(--space-9); }
.pl-10 { padding-left: var(--space-10); }
.pr-10 { padding-right: var(--space-10); }
.pl-12 { padding-left: var(--space-12); }
.pr-12 { padding-right: var(--space-12); }
.pl-16 { padding-left: var(--space-16); }
.pr-16 { padding-right: var(--space-16); }
.pl-20 { padding-left: var(--space-20); }
.pr-20 { padding-right: var(--space-20); }
.pl-24 { padding-left: var(--space-24); }
.pr-24 { padding-right: var(--space-24); }
.pt-0 { padding-top: 0; }
.pb-0 { padding-bottom: 0; }
.p-0 { padding: 0; }

.fs-xs { font-size: var(--fs-xs); }
.fs-sm { font-size: var(--fs-sm); }
.fs-base { font-size: var(--fs-base); }
.fs-md { font-size: var(--fs-md); }
.fs-lg { font-size: var(--fs-lg); }
.fs-xl { font-size: var(--fs-xl); }
.fs-2xl { font-size: var(--fs-2xl); }
.fs-3xl { font-size: var(--fs-3xl); }
.fs-4xl { font-size: var(--fs-4xl); }

.fw-400 { font-weight: 400; }
.fw-500 { font-weight: 500; }
.fw-600 { font-weight: 600; }
.fw-700 { font-weight: 700; }

.maxw-540 { max-width: 540px; margin-left: auto; margin-right: auto; }
.maxw-720 { max-width: 720px; margin-left: auto; margin-right: auto; }
.maxw-760 { max-width: 760px; margin-left: auto; margin-right: auto; }
.maxw-780 { max-width: 780px; margin-left: auto; margin-right: auto; }

.flex-center { display: flex; gap: var(--space-3); justify-content: center; align-items: center; flex-wrap: wrap; }
.flex-between-wrap { display: flex; justify-content: space-between; align-items: center; gap: var(--space-3); flex-wrap: wrap; }
