/* =========================================
   SECTION 04 - FESTIVE MENU
   ========================================= */

.mb-menu {
  position: relative;
  overflow: hidden;

  padding: 92px 0 0;

  color: #f3e7ce;

  background:
    radial-gradient(
      circle at 12% 12%,
      rgba(142, 43, 47, 0.32),
      transparent 30%
    ),
    radial-gradient(
      circle at 86% 24%,
      rgba(179, 119, 48, 0.12),
      transparent 28%
    ),
    linear-gradient(
      180deg,
      #39090e 0%,
      #250609 58%,
      #150305 100%
    );
}

.mb-menu__wrap {
  width: min(1380px, calc(100% - 56px));
  margin: 0 auto;
}


/* HERO */

.mb-menu__hero {
  display: grid;
  grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
  gap: clamp(42px, 5vw, 82px);

  align-items: center;

  margin-bottom: 78px;
}

.mb-menu__intro {
  position: relative;
}

.mb-menu__kicker {
  display: flex;
  align-items: center;
  gap: 14px;

  margin-bottom: 17px;

  color: #d5ac5e;

  font-family: var(--mb-sans);
  font-size: 11px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0.22em;
  text-transform: uppercase;
}

.mb-menu__kicker::before {
  content: "";

  width: 54px;
  height: 1px;

  background:
    linear-gradient(
      90deg,
      rgba(220, 181, 104, 0),
      rgba(220, 181, 104, 0.92)
    );
}

.mb-menu__title {
  margin: 0;

  font-family: var(--mb-serif);
  font-size: clamp(56px, 6vw, 94px);
  font-weight: 400;
  line-height: 0.91;
  letter-spacing: -0.035em;
  text-transform: uppercase;

  color: #f6e5c2;
}

.mb-menu__subtitle {
  max-width: 590px;

  margin: 24px 0 0;

  font-family: var(--mb-serif);
  font-size: clamp(21px, 1.65vw, 28px);
  line-height: 1.32;

  color: rgba(246, 231, 203, 0.78);
}

.mb-menu__ornament {
  width: min(350px, 72%);

  display: flex;
  align-items: center;
  gap: 13px;

  margin: 28px 0;

  color: #d5ac5e;
}

.mb-menu__ornament::before,
.mb-menu__ornament::after {
  content: "";

  flex: 1;
  height: 1px;

  background:
    linear-gradient(
      90deg,
      transparent,
      rgba(218, 177, 97, 0.70)
    );
}

.mb-menu__ornament::after {
  background:
    linear-gradient(
      90deg,
      rgba(218, 177, 97, 0.70),
      transparent
    );
}

.mb-menu__ornament span {
  font-size: 15px;
}

.mb-menu__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
}

.mb-menu__download {
  min-height: 56px;

  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 11px;

  padding: 0 27px;

  border: 1px solid #d2aa60;

  color: #231208;

  background:
    linear-gradient(
      135deg,
      #f0d99f,
      #c79649 54%,
      #efd79e
    );

  font-family: var(--mb-sans);
  font-size: 12px;
  font-weight: 800;
  line-height: 1;
  letter-spacing: 0.08em;
  text-decoration: none;
  text-transform: uppercase;
}

.mb-menu__download-icon {
  font-size: 17px;
  line-height: 1;
}

.mb-menu__photo-frame {
  position: relative;

  padding: 9px;

  border: 1px solid rgba(221, 182, 106, 0.58);

  background: rgba(255,255,255,0.025);
}

.mb-menu__photo-frame::before,
.mb-menu__photo-frame::after {
  content: "";

  position: absolute;

  width: 52px;
  height: 52px;

  pointer-events: none;
}

.mb-menu__photo-frame::before {
  top: -6px;
  left: -6px;

  border-top: 1px solid #e0bd77;
  border-left: 1px solid #e0bd77;
}

.mb-menu__photo-frame::after {
  right: -6px;
  bottom: -6px;

  border-right: 1px solid #e0bd77;
  border-bottom: 1px solid #e0bd77;
}

.mb-menu__main-photo {
  display: block;

  width: 100%;
  aspect-ratio: 1.34 / 1;

  object-fit: cover;

  border: 1px solid rgba(235, 205, 148, 0.17);
}


/* MENU CONTENT */

.mb-menu__content {
  position: relative;

  padding:
    72px
    clamp(32px, 5vw, 74px)
    78px;

  border:
    1px solid rgba(217, 173, 91, 0.28);

  background:
    radial-gradient(
      circle at 50% 0%,
      rgba(137, 36, 40, 0.18),
      transparent 33%
    ),
    rgba(20, 4, 6, 0.50);
}

.mb-menu__content::before {
  content: "✦";

  position: absolute;

  left: 50%;
  top: -16px;

  width: 36px;
  height: 32px;

  display: grid;
  place-items: center;

  transform: translateX(-50%);

  color: #d8b36c;
  background: #28070a;

  font-size: 17px;
}

.mb-menu__content-heading {
  margin: 0 0 51px;

  text-align: center;
}

.mb-menu__content-heading h3 {
  margin: 0;

  font-family: var(--mb-serif);
  font-size: clamp(32px, 3.2vw, 48px);
  font-weight: 400;
  line-height: 1;
  text-transform: uppercase;

  color: #f1ddb7;
}

.mb-menu__content-heading p {
  margin: 11px 0 0;

  color: rgba(239, 220, 183, 0.56);

  font-family: var(--mb-serif);
  font-size: 17px;
}

.mb-menu__grid {
  display: grid;
  grid-template-columns:
    minmax(0, 1.32fr)
    minmax(0, 0.84fr);

  gap: 45px 54px;
}

.mb-menu__category {
  position: relative;
}

.mb-menu__category--snacks {
  grid-row: span 3;
}

.mb-menu__category-title {
  display: flex;
  align-items: center;
  gap: 13px;

  margin: 0 0 27px;

  font-family: var(--mb-serif);
  font-size: clamp(27px, 2.2vw, 35px);
  font-weight: 400;
  line-height: 1;

  color: #e0bd77;
  text-transform: uppercase;
}

.mb-menu__category-title::after {
  content: "";

  flex: 1;

  height: 1px;

  background:
    linear-gradient(
      90deg,
      rgba(214, 173, 96, 0.62),
      transparent
    );
}

.mb-menu__category-caption {
  margin: -17px 0 25px;

  color: rgba(241, 221, 182, 0.49);

  font-family: var(--mb-sans);
  font-size: 9px;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}

.mb-menu__items {
  display: grid;
  gap: 22px;
}

.mb-menu__items--snacks {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 24px 34px;
}

.mb-menu__item {
  position: relative;

  padding-left: 17px;
}

.mb-menu__item::before {
  content: "◆";

  position: absolute;
  left: 0;
  top: 4px;

  color: #c7984b;

  font-size: 6px;
}

.mb-menu__item-head {
  display: flex;
  align-items: baseline;
  gap: 9px;
}

.mb-menu__item-name {
  margin: 0;

  color: #f0dfbf;

  font-family: var(--mb-serif);
  font-size: 18px;
  font-weight: 400;
  line-height: 1.16;
}

.mb-menu__weight {
  flex: 0 0 auto;

  color: #caa45e;

  font-family: var(--mb-sans);
  font-size: 9px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.mb-menu__ingredients {
  margin: 5px 0 0;

  color: rgba(239, 221, 187, 0.49);

  font-family: var(--mb-serif);
  font-size: 13px;
  line-height: 1.3;
}

.mb-menu__drinks {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 17px;
}

.mb-menu__drink {
  padding: 18px 19px;

  border:
    1px solid rgba(210, 165, 82, 0.18);

  background:
    rgba(255,255,255,0.018);
}

.mb-menu__drink-name {
  color: #eed9af;

  font-family: var(--mb-serif);
  font-size: 19px;
}

.mb-menu__drink-volume {
  margin-top: 4px;

  color: #c89f59;

  font-family: var(--mb-sans);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}


/* PHOTO MARQUEE */

.mb-menu__gallery {
  position: relative;

  margin-top: 83px;
  padding-bottom: 96px;
}

.mb-menu__gallery-heading {
  width: min(1380px, calc(100% - 56px));

  margin: 0 auto 31px;

  display: flex;
  align-items: center;
  gap: 17px;

  color: #d7b26b;
}

.mb-menu__gallery-heading::before,
.mb-menu__gallery-heading::after {
  content: "";

  flex: 1;
  height: 1px;

  background:
    linear-gradient(
      90deg,
      transparent,
      rgba(213, 173, 95, 0.46)
    );
}

.mb-menu__gallery-heading::after {
  background:
    linear-gradient(
      90deg,
      rgba(213, 173, 95, 0.46),
      transparent
    );
}

.mb-menu__gallery-heading span {
  flex: 0 0 auto;

  font-family: var(--mb-serif);
  font-size: 22px;
  text-transform: uppercase;
}

.mb-menu__marquee {
  position: relative;

  width: 100%;
  overflow: hidden;

  margin-top: 13px;
}

.mb-menu__track {
  width: max-content;

  display: flex;
  align-items: center;
  gap: 13px;

  will-change: transform;
}

.mb-menu__track--left {
  animation:
    mb-menu-scroll-left
    38s
    linear
    infinite;
}

.mb-menu__track--right {
  animation:
    mb-menu-scroll-right
    43s
    linear
    infinite;
}

.mb-menu__gallery-image {
  display: block;

  height: 190px;
  width: auto;

  flex: 0 0 auto;

  border:
    1px solid rgba(221, 183, 109, 0.68);

  padding: 5px;

  background:
    rgba(255,255,255,0.025);
}

@keyframes mb-menu-scroll-left {
  from {
    transform: translateX(0);
  }

  to {
    transform: translateX(calc(-50% - 6.5px));
  }
}

@keyframes mb-menu-scroll-right {
  from {
    transform: translateX(calc(-50% - 6.5px));
  }

  to {
    transform: translateX(0);
  }
}


/* TABLET */

@media (max-width: 1100px) {

  .mb-menu {
    padding-top: 78px;
  }

  .mb-menu__hero {
    grid-template-columns: 0.9fr 1.1fr;
    gap: 40px;
  }

  .mb-menu__grid {
    grid-template-columns: 1fr;
  }

  .mb-menu__category--snacks {
    grid-row: auto;
  }

}


/* MOBILE */

@media (max-width: 700px) {

  .mb-menu {
    padding-top: 68px;
  }

  .mb-menu__wrap {
    width: calc(100% - 34px);
  }

  .mb-menu__hero {
    display: flex;
    flex-direction: column;

    gap: 34px;

    margin-bottom: 50px;
  }

  .mb-menu__title {
    font-size: clamp(48px, 14vw, 65px);
  }

  .mb-menu__subtitle {
    margin-top: 18px;

    font-size: 20px;
  }

  .mb-menu__ornament {
    margin: 22px 0;
  }

  .mb-menu__download {
    width: 100%;
  }

  .mb-menu__photo-frame {
    padding: 6px;
  }

  .mb-menu__main-photo {
    aspect-ratio: 1.18 / 1;
  }

  .mb-menu__content {
    padding:
      55px
      19px
      58px;
  }

  .mb-menu__content-heading {
    margin-bottom: 43px;
  }

  .mb-menu__content-heading h3 {
    font-size: 32px;
  }

  .mb-menu__content-heading p {
    font-size: 15px;
  }

  .mb-menu__grid {
    display: block;
  }

  .mb-menu__category + .mb-menu__category {
    margin-top: 48px;
  }

  .mb-menu__category-title {
    font-size: 27px;
  }

  .mb-menu__items--snacks {
    grid-template-columns: 1fr;
  }

  .mb-menu__item-name {
    font-size: 18px;
  }

  .mb-menu__ingredients {
    font-size: 13px;
  }

  .mb-menu__gallery {
    margin-top: 58px;
    padding-bottom: 72px;
  }

  .mb-menu__gallery-heading {
    width: calc(100% - 34px);
  }

  .mb-menu__gallery-heading span {
    font-size: 17px;
  }

  .mb-menu__gallery-image {
    height: 128px;
    padding: 4px;
  }

  .mb-menu__track {
    gap: 9px;
  }

  .mb-menu__track--left {
    animation-duration: 32s;
  }

  .mb-menu__track--right {
    animation-duration: 36s;
  }

}


/* REDUCED MOTION */

@media (prefers-reduced-motion: reduce) {

  .mb-menu__track {
    animation-play-state: paused;
  }

}


/* MOBILE MENU COMPACT ACCORDION */

@media (max-width: 700px) {

  /*
   * Не даём крупной типографике или декору
   * раздвигать страницу шире телефона.
   */
  .mb-menu {
    width: 100%;
    max-width: 100%;
    overflow-x: hidden;
  }

  .mb-menu__wrap,
  .mb-menu__hero,
  .mb-menu__intro,
  .mb-menu__content,
  .mb-menu__grid {
    min-width: 0;
    max-width: 100%;
  }

  .mb-menu__wrap {
    width: calc(100% - 28px);
  }


  /*
   * Верх блока.
   */
  .mb-menu__title {
    max-width: 100%;

    font-size: clamp(38px, 10.8vw, 48px);
    line-height: 0.92;
    letter-spacing: -0.04em;
  }

  .mb-menu__subtitle {
    max-width: 100%;

    font-size: 18px;
    line-height: 1.35;
  }


  /*
   * Кнопка PDF компактнее.
   */
  .mb-menu__actions {
    width: 100%;

    display: flex;
    justify-content: center;
  }

  .mb-menu__download {
    width: auto;
    min-width: min(270px, 100%);
    max-width: 100%;

    padding-left: 22px;
    padding-right: 22px;
  }


  /*
   * Сам блок меню чуть компактнее.
   */
  .mb-menu__content {
    width: 100%;

    padding:
      48px
      16px
      42px;
  }

  .mb-menu__content-heading {
    margin-bottom: 28px;
  }


  /*
   * Категории превращаем в аккордеон.
   */
  .mb-menu__grid {
    display: block;
  }

  .mb-menu__category,
  .mb-menu__category + .mb-menu__category {
    margin: 0;

    border-top:
      1px solid rgba(215, 174, 96, 0.25);
  }

  .mb-menu__category:last-child {
    border-bottom:
      1px solid rgba(215, 174, 96, 0.25);
  }

  .mb-menu__category-title {
    position: relative;

    width: 100%;

    margin: 0;
    padding:
      20px
      42px
      20px
      0;

    display: block;

    font-size: 26px;
    line-height: 1;

    cursor: pointer;

    -webkit-tap-highlight-color: transparent;
  }

  /*
   * Старую декоративную линию справа
   * на мобильном превращаем в + / −.
   */
  .mb-menu__category-title::after {
    content: "+";

    position: absolute;

    top: 50%;
    right: 2px;

    width: auto;
    height: auto;

    flex: none;

    transform: translateY(-52%);

    background: none;

    color: #d7b169;

    font-family: var(--mb-serif);
    font-size: 30px;
    font-weight: 300;
    line-height: 1;
  }

  .mb-menu__category.is-open
  .mb-menu__category-title::after {
    content: "−";
  }


  /*
   * По умолчанию содержимое скрыто.
   */
  .mb-menu__category-caption,
  .mb-menu__category .mb-menu__items,
  .mb-menu__category .mb-menu__drinks {
    display: none;
  }


  /*
   * Открытая категория.
   */
  .mb-menu__category.is-open
  .mb-menu__category-caption {
    display: block;

    margin:
      -7px
      0
      18px;
  }

  .mb-menu__category.is-open
  .mb-menu__items {
    display: grid;

    padding-bottom: 27px;
  }

  .mb-menu__category.is-open
  .mb-menu__items--snacks {
    grid-template-columns: 1fr;
  }

  .mb-menu__category.is-open
  .mb-menu__drinks {
    display: grid;

    padding-bottom: 27px;
  }


  /*
   * Длинные названия блюда + граммовка
   * должны помещаться внутри телефона.
   */
  .mb-menu__item-head {
    display: grid;

    grid-template-columns:
      minmax(0, 1fr)
      auto;

    align-items: start;
    gap: 8px;
  }

  .mb-menu__item-name {
    min-width: 0;

    font-size: 18px;
    line-height: 1.18;
  }

  .mb-menu__weight {
    padding-top: 3px;
  }

  .mb-menu__ingredients {
    font-size: 13px;
    line-height: 1.35;
  }


  /*
   * Заголовок фотолент.
   */
  .mb-menu__gallery-heading span {
    text-align: center;
  }

}



/* MOBILE MENU GALLERY INTERACTION V2 */


/* -------------------------------------------------
   Secondary PDF button
   ------------------------------------------------- */

.mb-menu__download-after {
  display: none;
}


/* -------------------------------------------------
   Gallery controlled by JavaScript now
   ------------------------------------------------- */

.mb-menu__track--left,
.mb-menu__track--right {
  animation: none !important;
}

.mb-menu__track {
  transform: translate3d(0, 0, 0);
  will-change: transform;

  cursor: grab;

  touch-action: pan-y;

  user-select: none;
  -webkit-user-select: none;
}

.mb-menu__track.is-dragging {
  cursor: grabbing;
}

.mb-menu__gallery-image {
  cursor: zoom-in;

  user-select: none;
  -webkit-user-select: none;
  -webkit-user-drag: none;
}


/* -------------------------------------------------
   Fullscreen image viewer
   ------------------------------------------------- */

.mb-menu-lightbox {
  position: fixed;
  inset: 0;

  z-index: 20000;

  display: flex;
  align-items: center;
  justify-content: center;

  padding: 28px;

  visibility: hidden;
  opacity: 0;

  background:
    rgba(8, 2, 3, 0.94);

  backdrop-filter: blur(10px);

  transition:
    opacity 180ms ease,
    visibility 180ms ease;
}

.mb-menu-lightbox.is-open {
  visibility: visible;
  opacity: 1;
}

.mb-menu-lightbox__image {
  display: block;

  max-width: min(94vw, 1500px);
  max-height: 88svh;

  width: auto;
  height: auto;

  object-fit: contain;

  padding: 6px;

  border:
    1px solid rgba(220, 180, 103, 0.65);

  background:
    rgba(255,255,255,0.025);

  box-shadow:
    0 30px 90px rgba(0,0,0,0.65);
}

.mb-menu-lightbox__close {
  position: absolute;

  top: max(18px, env(safe-area-inset-top));
  right: 20px;

  width: 48px;
  height: 48px;

  display: grid;
  place-items: center;

  padding: 0;

  border:
    1px solid rgba(220, 180, 103, 0.45);

  border-radius: 50%;

  color: #f2dcae;

  background:
    rgba(30, 6, 8, 0.64);

  font-family: Arial, sans-serif;
  font-size: 30px;
  font-weight: 200;
  line-height: 1;

  cursor: pointer;
}


/* -------------------------------------------------
   Mobile
   ------------------------------------------------- */

@media (max-width: 700px) {

  /*
   * Верхнюю PDF-кнопку убираем.
   */
  .mb-menu__intro .mb-menu__actions {
    display: none;
  }


  /*
   * Новая кнопка прямо под меню.
   */
  .mb-menu__download-after {
    width: calc(100% - 28px);

    display: flex;
    justify-content: center;

    margin:
      22px
      auto
      58px;
  }

  .mb-menu__download-after
  .mb-menu__download {
    width: min(330px, 100%);

    min-width: 0;

    min-height: 54px;
  }


  /*
   * Галерею подтягиваем после кнопки.
   */
  .mb-menu__gallery {
    margin-top: 0;
  }

  .mb-menu__gallery-heading {
    margin-bottom: 24px;
  }

  .mb-menu__gallery-heading span {
    font-size: 18px;
    line-height: 1.15;
  }


  /*
   * Фотографии немного крупнее:
   * пальцем по ним удобнее работать.
   */
  .mb-menu__gallery-image {
    height: 138px;
  }


  /*
   * Fullscreen photo.
   */
  .mb-menu-lightbox {
    padding:
      max(72px, env(safe-area-inset-top))
      12px
      max(28px, env(safe-area-inset-bottom));
  }

  .mb-menu-lightbox__image {
    max-width: 96vw;
    max-height: 82svh;

    padding: 4px;
  }

}


/* SMOOTH GALLERY DRAG */

.mb-menu__track {
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;

  transform: translate3d(0, 0, 0);

  touch-action: pan-y;
}

.mb-menu__gallery-image {
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
}
