/* ==========================================================================
   TAOS — адаптив. Все медиазапросы проекта в одном файле.

   Подключается ПОСЛЕ css/main.css и только вместе с ним.

   Секции и их порядок повторяют main.css: если у блока есть адаптивные
   правила, они лежат здесь под тем же именем. Внутри секции сохранён
   исходный порядок брейкпоинтов.

   Содержание (искать по номеру или по имени блока):
      1. base/reset
      2. base/variables
      3. blocks/decor
      4. blocks/btn
      5. blocks/logo
      6. blocks/lang
      7. blocks/section-header
      8. blocks/step
      9. blocks/feature-card
     10. blocks/capability-card
     11. blocks/tabs
     12. blocks/team-card
     13. blocks/award-card
     14. blocks/plan-card
     15. blocks/faq
     16. blocks/contact-list
     17. blocks/contact-form
     18. blocks/header
     19. blocks/mobile-menu
     20. blocks/footer
     21. blocks/hero
     22. blocks/steps
     23. blocks/capabilities
     24. blocks/dashboard-promo
     25. blocks/benefits
     26. blocks/dashboard-cta
     27. blocks/partnership
     28. blocks/about-hero
     29. blocks/about-team
     30. blocks/about-awards
     31. blocks/pricing-hero
     32. blocks/pricing-faq
     33. blocks/contacts
   ========================================================================== */

/* ======================================================================
   1. base/reset
   ====================================================================== */
@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  *,
  *::before,
  *::after {
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
  }
}

/* ======================================================================
   2. base/variables
   ====================================================================== */
@media (min-width: 768px) {
  :root {
    --gutter: 32px;
    --section-py: 72px;
  }
}

@media (min-width: 1280px) {
  :root {
    --gutter: 40px;
    --section-py: 100px;
  }
}

/* ======================================================================
   3. blocks/decor
   ====================================================================== */
/* Ниже десктопного макета: пятна шире экрана, видимой границы нет */
@media (max-width: 1279px) {
  .page {
    background-image:
      radial-gradient(
        ellipse 165vw min(95vw, 620px) at 80% 3%,
        rgba(154, 64, 196, 0.13) 0%,
        rgba(154, 64, 196, 0.06) 45%,
        rgba(154, 64, 196, 0) 80%
      ),
      radial-gradient(
        ellipse 155vw min(55vw, 520px) at -8% 42%,
        rgba(160, 64, 160, 0.12) 0%,
        rgba(160, 64, 160, 0.05) 45%,
        rgba(160, 64, 160, 0) 82%
      );
    background-size: 100% 1200px;
  }
}

@media (max-width: 767px) {
  .page {
    background-size: 100% 900px;
  }
}

/* ======================================================================
   4. blocks/btn
   ====================================================================== */
@media (min-width: 1280px) {
  .btn {
    font-size: 18px;
  }

  /* Призрачная кнопка на десктопе остаётся 16px — так в макете (Inter 600 16
     против Noto Sans 600 18 у основной). Правило обязано стоять ниже .btn:
     селекторы одного веса, решает порядок. Держим его здесь, а не в базовом
     .btn--ghost, чтобы оно не зависело от того, где в проекте лежат
     медиазапросы. */
  .btn--ghost {
    font-size: 16px;
  }
}

@media (min-width: 1280px) {
  .btn--lg {
    min-height: 64px;
  }
}

/* ======================================================================
   5. blocks/logo
   ====================================================================== */
@media (min-width: 1024px) {
  .header__logo img,
  .footer__logo img {
    width: 154px;
  }
}

/* ======================================================================
   6. blocks/lang
   ====================================================================== */
/* --- Десктоп: кнопка встаёт в ряд с «Sign in» и «Download» --- */
@media (min-width: 1024px) {
  .lang__toggle {
    height: auto;
    padding: 8px 12px;
    font-size: 16px;
  }

  .lang__option {
    font-size: 16px;
  }
}

@media (min-width: 1280px) {
  .lang__toggle {
    font-size: 18px;
  }
}

/* ======================================================================
   7. blocks/section-header
   ====================================================================== */
@media (min-width: 768px) {
  .section-header--about {
    gap: 8px;
  }

  .section-header--about .eyebrow {
    padding: 6px 14px;
    font-family: var(--font-sans);
    font-size: clamp(12px, 0.73vw, 14px);
    line-height: 1.36;
  }

  .section-header--about .section-header__title {
    line-height: 1.1;
  }
}

/* ======================================================================
   8. blocks/step
   ====================================================================== */
@media (min-width: 1024px) {
  .step {
    gap: 24px;
  }
}

/* ======================================================================
   9. blocks/feature-card
   ====================================================================== */
@media (min-width: 768px) {
  .feature-card {
    gap: 16px;
    padding: 32px;
  }
}

@media (min-width: 1024px) {
  /* В макете все шесть карточек одной высоты */
  .feature-card {
    min-height: 195px;
  }
}

/* ======================================================================
   10. blocks/capability-card
   ====================================================================== */
@media (min-width: 768px) {
  .capability-card {
    padding: 40px 40px 0;
    border-radius: var(--radius-lg);
  }
}

/* ======================================================================
   11. blocks/tabs
   ====================================================================== */
@media (min-width: 1024px) {
  .tabs {
    display: none;
  }
}

/* ======================================================================
   12. blocks/team-card
   ====================================================================== */
@media (min-width: 768px) {
  .team-card {
    gap: 12px;
    padding: 0;
    border: 0;
    border-radius: 0;
    background-color: transparent;
    box-shadow: none;
  }

  .team-card__head {
    flex-direction: column;
    gap: 24px;
  }

  .team-card__photo {
    width: 100%;
  }

  .team-card__info {
    gap: 8px;
    text-align: center;
  }

  .team-card__name {
    font-size: clamp(18px, 1.25vw, 24px);
    font-weight: 700;
  }

  .team-card__role {
    font-size: clamp(14px, 0.94vw, 18px);
    color: var(--color-accent);
  }

  .team-card__text {
    font-size: 14px;
    line-height: 1.57;
    text-align: center;
  }
}

/* ======================================================================
   13. blocks/award-card
   ====================================================================== */
@media (min-width: 768px) {
  .award-card {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas:
      "logo"
      "body"
      "year";
    align-content: start;
    justify-items: center;
    gap: 4px;
    padding: 24px;
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-card);
  }

  /* 4px общего зазора + 16px здесь = 20px между логотипом и текстом */
  .award-card__logo {
    width: clamp(96px, 7.3vw, 140px);
    margin-bottom: 16px;
    padding: 0;
    border-radius: 30px;
    background-color: transparent;
  }

  .award-card__year {
    justify-self: center;
    font-family: var(--font-sans);
    font-size: clamp(14px, 0.94vw, 18px);
    font-weight: 600;
    line-height: 1.36;
    color: var(--color-accent-light);
  }

  .award-card__body {
    gap: 4px;
    text-align: center;
  }

  .award-card__title {
    font-size: clamp(16px, 0.94vw, 18px);
  }

  .award-card__text {
    font-family: var(--font-sans);
    font-size: clamp(14px, 0.84vw, 16px);
    line-height: 1.36;
  }
}

/* ======================================================================
   14. blocks/plan-card
   ====================================================================== */
@media (min-width: 768px) {
  .plan-card {
    padding: 42px;
  }

  .plan-card__icon {
    margin-top: 4px;
  }

  .plan-card__button {
    min-height: 74px;
    font-size: clamp(18px, 1.25vw, 24px);
    line-height: clamp(25px, 1.72vw, 33px);
  }
}

/* ======================================================================
   15. blocks/faq
   ====================================================================== */
@media (min-width: 768px) {
  .faq__question {
    padding: 32px;
  }

  .faq__answer {
    padding: 16px 32px 32px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .faq__panel {
    transition: none;
  }
}

/* ======================================================================
   16. blocks/contact-list
   ====================================================================== */
/* На самых узких экранах двум колонкам уже тесно */
@media (max-width: 359px) {
  .contact-list {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* ======================================================================
   17. blocks/contact-form
   ====================================================================== */
@media (min-width: 768px) {
  .contact-form {
    padding: 60px;
  }

  .contact-form__title {
    margin-bottom: 48px;
  }

  .contact-form__fields {
    gap: 32px;
  }

  .contact-form__field--area {
    margin-top: 48px;
  }

  .contact-form__input {
    padding: 10px 10px 32px;
  }

  .contact-form__actions {
    margin-top: 48px;
  }

  .contact-form__submit {
    /* Ширина кнопки из макета: по содержимому она получается уже */
    min-width: min(326px, 100%);
    min-height: 74px;
    padding: 16px 32px;
    font-size: clamp(18px, 1.25vw, 24px);
    line-height: 24px;
  }
}

/* ======================================================================
   18. blocks/header
   ====================================================================== */
/* --- Планшет: шапка становится стеклянной карточкой --- */
@media (min-width: 768px) {
  .header__inner {
    padding: 8px 8px 8px 20px;
    border: 2px solid rgba(255, 255, 255, 0.9);
    border-radius: var(--radius-pill);
    background-color: rgba(255, 255, 255, 0.7);
    box-shadow: 0 17px 44px rgba(123, 112, 176, 0.1);
    -webkit-backdrop-filter: blur(72px);
    backdrop-filter: blur(72px);
  }
}

/* --- Десктоп: полная навигация, бургер прячется --- */
@media (min-width: 1024px) {
  .header__inner {
    min-height: 78px;
    padding: 15px 17px 15px 40px;
    gap: 16px;
  }

  .header__logo {
    margin-right: 0;
  }

  .header__nav {
    display: block;
    margin: 0 auto;
  }

  .header__actions {
    display: flex;
    align-items: center;
    gap: 8px;
  }

  .header__burger {
    display: none;
  }
}

/* --- Меню ровно по центру страницы ---

   В макете меню стоит по центру фрейма. В потоке этого не добиться: правая
   группа (переключатель языка и две кнопки) шире логотипа, автоотступы делят
   свободное место поровну, и меню уезжает влево — с переключателем на 42px.
   Поэтому на широких экранах меню выносится из потока: .header__inner
   центрирован контейнером, значит его 50% и есть центр страницы.

   Порог 1100, а не 1024: замером на 1024 между «Contacts» и кнопкой языка
   остаётся 15px — не пересекаются, но выглядит впритык. Ниже порога меню
   остаётся в потоке, посередине свободного места. */
@media (min-width: 1100px) {
  .header__inner {
    position: relative;
  }

  .header__nav {
    position: absolute;
    top: 50%;
    left: 50%;
    margin: 0;
    transform: translate(-50%, -50%);
  }

  /* Меню больше не занимает место в строке — вправо группу кнопок
     отодвигает логотип. */
  .header__logo {
    margin-right: auto;
  }
}

/* Шапка поверх первого экрана — только там, где так в макете.

   На главной иллюстрация hero уходит под шапку, поэтому шапка вынесена
   из потока, а hero компенсирует её своим верхним паддингом. На «О нас»
   шапка стоит в потоке обычным блоком: в макете первый экран начинается
   строго под ней. Без модификатора страница теряла бы 100px отступа
   сверху — шапка накрывала бы их собой. */
@media (min-width: 1280px) {
  .header--overlay {
    position: absolute;
    top: 0;
    right: 0;
    left: 0;
  }
}

/* ======================================================================
   19. blocks/mobile-menu
   ====================================================================== */
@media (min-width: 1024px) {
  .mobile-menu {
    display: none;
  }
}

/* ======================================================================
   20. blocks/footer
   ====================================================================== */
@media (min-width: 1024px) {
  .footer {
    padding-block: 27px 40px;
  }

  .footer__grid {
    grid-template-columns: 1fr auto 1fr;
    grid-template-areas:
      "nav  nav  side"
      "line line line"
      "copy logo legal";
    row-gap: 28px;
  }

  .footer__logo {
    justify-self: center;
  }

  .footer__legal {
    justify-self: end;
  }
}

/* ======================================================================
   21. blocks/hero
   ====================================================================== */
@media (min-width: 768px) {
  .hero__actions {
    flex-direction: row;
    align-items: center;
  }
}

/* --- Десктоп: две колонки, иллюстрация справа поверх колонки текста --- */
@media (min-width: 1280px) {
  .hero {
    padding-top: 258px;
    padding-bottom: 120px;
  }

  .hero__content {
    position: relative;
    z-index: 2;
    /* Колонка текста обязана заканчиваться до телефона, который стоит
       на 50.55% ширины экрана. 50% контейнера + 0.5vw как раз даёт эту
       границу на любой ширине, минус 24px зазора. В макете это ровно 754px. */
    max-width: min(754px, calc(50% + 0.5vw - 24px));
  }

  .hero__actions {
    gap: 16px;
    margin-top: 23px;
  }

  .hero__qr {
    display: flex;
    margin-top: 42px;
  }

  /* Блок иллюстрации повторяет пропорции десктопного фрейма 1920x1124.
     Ширина — ровно вьюпорт, а не жёсткие 1920px: иначе на экране уже макета
     композиция не сжимается, за край уезжает больше задуманного, и от
     ноутбука остаётся рубленый огрызок. */
  .hero__media {
    position: absolute;
    top: -258px;
    left: 50%;
    z-index: 1;
    width: 100vw;
    margin: 0;
    aspect-ratio: 1920 / 1124;
    transform: translateX(-50%);
  }

  .hero__laptop {
    left: 56.56%;
    top: 12.81%;
    width: 57.08%;
  }

  .hero__phone {
    left: 50.55%;
    top: 29.27%;
    width: 16.67%;
  }

  .hero__food {
    left: 59.21%;
    top: 49.64%;
    width: 16.15%;
  }

}

/* ======================================================================
   22. blocks/steps
   ====================================================================== */
@media (min-width: 768px) {
  .steps__card {
    padding: 40px;
    border-radius: var(--radius-lg);
  }

  .steps__grid {
    gap: 32px;
    margin-top: 48px;
  }

  .steps__list {
    gap: 24px;
    margin-top: 24px;
  }
}

@media (min-width: 1024px) {
  .steps__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 42px;
  }
}

@media (min-width: 1280px) {
  .steps__grid {
    margin-top: 55px;
  }

  /* Под выезжающие иллюстрации освобождаем место внутри карточек */
  .steps__card:first-child {
    padding-left: 180px;
  }

  .steps__card:last-child {
    padding-right: 180px;
  }

  /* Ширина по вьюпорту, а не 1920px: см. комментарий в hero.css */
  .steps__media {
    position: absolute;
    top: 0;
    right: 0;
    left: 0;
    z-index: 0;
    display: block;
    aspect-ratio: 1920 / 1109;
    pointer-events: none;
  }

  .steps__laptop,
  .steps__phone {
    position: absolute;
    max-width: none;
  }

  .steps__laptop img,
  .steps__phone img {
    width: 100%;
    height: auto;
  }

  .steps__laptop {
    left: -34.79%;
    top: 17.76%;
    width: 57.08%;
  }

  .steps__phone {
    left: 84.1%;
    top: 23.98%;
    width: 18.44%;
  }
}

/* ======================================================================
   23. blocks/capabilities
   ====================================================================== */
@media (min-width: 768px) {
  /* Планшетного макета нет: на 768–1023 раскладываем карточки в две колонки,
     иначе секция вытягивается почти вдвое. */
  .capabilities__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    margin-top: 48px;
  }
}

@media (min-width: 1024px) {
  .capabilities__grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 34px;
    margin-top: 60px;
  }
}

/* ======================================================================
   24. blocks/dashboard-promo
   ====================================================================== */
@media (min-width: 768px) {
  .dashboard-promo {
    gap: 26px;
    margin-top: 40px;
    padding: 40px;
    border-radius: var(--radius-lg);
  }

  .dashboard-promo__media {
    gap: 26px;
  }
}

@media (min-width: 1280px) {
  .dashboard-promo {
    flex-direction: row;
    align-items: center;
  }

  .dashboard-promo__content {
    flex: 0 0 571px;
  }

  .dashboard-promo__media {
    flex: 1 1 auto;
  }
}

/* ======================================================================
   25. blocks/benefits
   ====================================================================== */
@media (min-width: 768px) {
  .benefits__grid {
    margin-top: 40px;
  }
}

@media (min-width: 1024px) {
  .benefits__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 24px;
    max-width: 1268px;
    margin: 60px auto 0;
  }

  .benefits__col {
    gap: 24px;
  }

  .benefits__label {
    display: inline-block;
  }

  .benefits__list {
    gap: 24px;
  }
}

/* ======================================================================
   26. blocks/dashboard-cta
   ====================================================================== */
@media (min-width: 1024px) {
  .dashboard-cta__inner {
    grid-template-columns: minmax(0, 627px) minmax(0, 1fr);
    align-items: center;
    gap: 60px;
  }

  .dashboard-cta__media img {
    width: 1184px;
    max-width: none;
  }
}

@media (min-width: 1280px) {
  /* Колонки и картинка считаются от ширины экрана, а не в жёстких пикселях:
     иначе на экране уже макета скриншот режется посреди таблицы.
     На 1920 значения совпадают с макетом: 627px, 117px, 1184px. */
  .dashboard-cta__inner {
    grid-template-columns: minmax(0, 32.7vw) minmax(0, 1fr);
    gap: 6.1vw;
  }

  .dashboard-cta__media img {
    /* 1210px из 1920 — вместе с внешней обводкой 13px, поэтому же
       отрицательный отступ, чтобы содержимое встало по координатам макета */
    width: 63.02vw;
    margin-left: -0.68vw;
  }

  .dashboard-cta__title {
    margin-top: 26px;
  }

  .dashboard-cta__text {
    margin-top: 26px;
  }
}

/* ======================================================================
   27. blocks/partnership
   ====================================================================== */
@media (min-width: 768px) {
  .partnership__inner {
    gap: 32px;
    padding: 60px 40px;
    border-radius: var(--radius-lg);
  }
}

@media (min-width: 1280px) {
  .partnership__inner {
    gap: 40px;
    padding: 61px 40px;
    border-radius: var(--radius-xl);
  }

  .partnership__text {
    margin-top: -24px;
  }
}

/* ======================================================================
   28. blocks/about-hero
   ====================================================================== */
@media (min-width: 768px) {
  .about-hero {
    padding-top: var(--section-py);
    padding-bottom: 0;
  }

  .about-hero__title {
    line-height: 1.21;
  }

  /* На десктопе иллюстрация без рамки: её края растворяются в фоне
     страницы — прозрачность вшита в сам файл (см. CLAUDE.md). */
  .about-hero__media {
    /* Доля иллюстрации от ширины экрана держится такой же, как в макете
       (1234 из 1920), иначе на промежуточной ширине она раздувается
       почти во весь контейнер и перевешивает заголовок. */
    max-width: min(1234px, 64.3vw);
    margin: 11px auto 0;
    padding: 0;
    border: 0;
    border-radius: 0;
    background-color: transparent;
  }

  .about-hero__image {
    aspect-ratio: 1234 / 543;
    border-radius: 0;
  }
}

/* ======================================================================
   29. blocks/about-team
   ====================================================================== */
/* Мобильный макет кладёт секцию на светлую подложку: карточки команды там
   белые с рамкой, и на белом фоне страницы они бы не читались. */
@media (max-width: 767px) {
  .about-team {
    background-color: var(--color-bg-soft);
  }
}

@media (min-width: 768px) {
  .about-team__grid {
    grid-template-columns: repeat(2, minmax(0, 294px));
    justify-content: center;
    column-gap: 40px;
    row-gap: 48px;
    margin-top: clamp(32px, 3.34vw, 64px);
  }
}

@media (min-width: 1024px) {
  .about-team__grid {
    grid-template-columns: repeat(3, minmax(0, 294px));
    column-gap: 64px;
    row-gap: 64px;
  }
}

@media (min-width: 1440px) {
  .about-team__grid {
    column-gap: clamp(64px, 7.03vw, 135px);
  }
}

/* ======================================================================
   30. blocks/about-awards
   ====================================================================== */
@media (min-width: 768px) {
  .about-awards__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 29px;
    margin-top: clamp(32px, 2.87vw, 55px);
  }
}

@media (min-width: 1280px) {
  .about-awards__grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}

@media (min-width: 1280px) {
  .about-awards__decor {
    position: absolute;
    top: -27.4vw;
    right: 0;
    left: 0;
    z-index: 0;
    display: block;
    overflow: hidden;
    height: 51vw;
    pointer-events: none;
  }

  .about-awards__swirl {
    position: absolute;
    top: 0;
    right: -33.6vw;
    width: 55vw;
    height: auto;
  }
}

/* ======================================================================
   31. blocks/pricing-hero
   ====================================================================== */
@media (min-width: 1280px) {
  .pricing-hero__decor {
    position: absolute;
    top: -22vw;
    right: 0;
    left: 0;
    z-index: 0;
    display: block;
    overflow: hidden;
    height: 58vw;
    pointer-events: none;
  }

  .pricing-hero__swirl {
    position: absolute;
    top: 0;
    left: -31vw;
    width: 61vw;
    height: auto;
  }
}

/* ======================================================================
   32. blocks/pricing-faq
   ====================================================================== */
@media (min-width: 1280px) {
  .pricing-faq {
    background-image: radial-gradient(
      ellipse clamp(660px, 45vw, 880px) clamp(420px, 30vw, 580px) at 6% 78%,
      rgba(160, 64, 170, 0.13) 0%,
      rgba(160, 64, 170, 0.06) 42%,
      rgba(160, 64, 170, 0) 78%
    );
  }
}

/* ======================================================================
   33. blocks/contacts
   ====================================================================== */
@media (min-width: 1024px) {
  /* Колонки равной ширины: на 1560 это 760 и 760 при макетных 770 и 750,
     а на промежуточных ширинах обе сжимаются вместе. Жёсткие 750px под
     форму на 1024 не оставили бы тексту места. */
  .contacts__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: start;
  }
}

@media (min-width: 1280px) {
  .contacts__decor {
    position: absolute;
    top: -22vw;
    right: 0;
    left: 0;
    z-index: 0;
    display: block;
    overflow: hidden;
    height: 58vw;
    pointer-events: none;
  }

  .contacts__swirl {
    position: absolute;
    top: 0;
    left: -31vw;
    width: 61vw;
    height: auto;
  }
}
