/**
 * tidex6 Layout
 * =============
 * Page structure: app > header + main + footer
 */

.app {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}

.main {
    flex: 1;
    padding-top: var(--header-height);
}

/* Контент ровно по ширине меню.
   `--content-max-width` — это ширина ПОЛЕЗНОЙ области, а не внешней коробки:
   шапка кладёт свой padding на `.header`, а `.header-inner` получает чистые
   1200. Здесь padding лежит на самом контейнере, поэтому его надо прибавить
   к max-width — иначе внутри остаётся 1152, и контент на 48px уже меню.
   Расхождение видно глазом: логотип левее первой карточки. */
.content {
    max-width: calc(var(--content-max-width) + var(--space-6) * 2);
    margin: 0 auto;
    padding: 0 var(--space-6);
}

/* Section — reusable vertical block */
.section {
    padding: var(--space-20) 0;
}

.section + .section {
    border-top: 1px solid var(--color-border-subtle);
}

.section-title {
    font-size: var(--font-size-3xl);
    font-weight: var(--font-weight-bold);
    margin-bottom: var(--space-4);
}

.section-subtitle {
    font-size: var(--font-size-lg);
    color: var(--color-text-secondary);
    margin-bottom: var(--space-12);
    max-width: 640px;
}

/* Grid helpers */
.grid-3 {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--space-6);
}

.grid-2 {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: var(--space-6);
}

@media (max-width: 1024px) {
    .grid-3 { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 768px) {
    .grid-3, .grid-2 { grid-template-columns: 1fr; }

    .section { padding: var(--space-12) 0; }
    .section-title { font-size: var(--font-size-2xl); }
}
